Fix image fg and bg colors on NS (Bug#9175).
authorAlp Aker <alp.tekin.aker@gmail.com>
Thu, 28 Jul 2011 18:29:09 +0000 (14:29 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Thu, 28 Jul 2011 18:29:09 +0000 (14:29 -0400)
* nsfns.m (x_set_foreground_color): Set f->foreground_pixel when
setting frame foreground color.
(x_set_background_color): Likewise.

src/ChangeLog
src/nsfns.m

index 24b36e7..259ccb9 100644 (file)
@@ -1,4 +1,10 @@
-2011-07-26  Alp Aker  <alp.tekin.aker@gmail.com>
+2011-07-28  Alp Aker  <alp.tekin.aker@gmail.com>
+
+       * nsfns.m (x_set_foreground_color): Set f->foreground_pixel when
+       setting frame foreground color (Bug#9175).
+       (x_set_background_color): Likewise.
+
+2011-07-28  Alp Aker  <alp.tekin.aker@gmail.com>
 
        Implement strike-through and overline on NextStep (Bug#8863).
 
index 0452086..85246a4 100644 (file)
@@ -321,6 +321,7 @@ static void
 x_set_foreground_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
 {
   NSColor *col;
+  CGFloat r, g, b, alpha;
 
   if (ns_lisp_to_color (arg, &col))
     {
@@ -332,6 +333,10 @@ x_set_foreground_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
   [f->output_data.ns->foreground_color release];
   f->output_data.ns->foreground_color = col;
 
+  [col getRed: &r green: &g blue: &b alpha: &alpha];
+  FRAME_FOREGROUND_PIXEL (f) =
+    ARGB_TO_ULONG ((int)(alpha*0xff), (int)(r*0xff), (int)(g*0xff), (int)(b*0xff));
+
   if (FRAME_NS_VIEW (f))
     {
       update_face_from_frame_parameter (f, Qforeground_color, arg);
@@ -348,7 +353,7 @@ x_set_background_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
   struct face *face;
   NSColor *col;
   NSView *view = FRAME_NS_VIEW (f);
-  float alpha;
+  CGFloat r, g, b, alpha;
 
   if (ns_lisp_to_color (arg, &col))
     {
@@ -364,10 +369,14 @@ x_set_background_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
   [col retain];
   [f->output_data.ns->background_color release];
   f->output_data.ns->background_color = col;
+
+  [col getRed: &r green: &g blue: &b alpha: &alpha];
+  FRAME_BACKGROUND_PIXEL (f) =
+    ARGB_TO_ULONG ((int)(alpha*0xff), (int)(r*0xff), (int)(g*0xff), (int)(b*0xff));
+
   if (view != nil)
     {
       [[view window] setBackgroundColor: col];
-      alpha = [col alphaComponent];
 
       if (alpha != 1.0)
           [[view window] setOpaque: NO];