diff src/redisplay-msw.c @ 282:c42ec1d1cded r21-0b39

Import from CVS: tag r21-0b39
author cvs
date Mon, 13 Aug 2007 10:33:18 +0200
parents 7df0dd720c89
children 558f606b08ae
line wrap: on
line diff
--- a/src/redisplay-msw.c	Mon Aug 13 10:32:23 2007 +0200
+++ b/src/redisplay-msw.c	Mon Aug 13 10:33:18 2007 +0200
@@ -524,16 +524,30 @@
     }
 
   /* Select the bitmaps into the compatible DC. */
-  if ((old=SelectObject(FRAME_MSWINDOWS_CDC(f),
-			IMAGE_INSTANCE_MSWINDOWS_BITMAP(p))))
+  if ((old=SelectObject(FRAME_MSWINDOWS_CDC (f),
+			IMAGE_INSTANCE_MSWINDOWS_BITMAP (p))))
     {
-      BitBlt(hdc, 
-	     x,y,
-	     width, height, 
-	     FRAME_MSWINDOWS_CDC(f),
-	     0,0, 
-	     SRCCOPY);                  
-      SelectObject(FRAME_MSWINDOWS_CDC(f),old);
+      if (!IMAGE_INSTANCE_MSWINDOWS_MASK (p))
+	{
+	  BitBlt(hdc, 
+		 x,y,
+		 width, height, 
+		 FRAME_MSWINDOWS_CDC (f),
+		 0,0, 
+		 SRCCOPY);                  
+	}
+      else
+	{
+	  MaskBlt(hdc, 
+		  x,y,
+		  width, height, 
+		  FRAME_MSWINDOWS_CDC (f),
+		  0,0, 
+		  IMAGE_INSTANCE_MSWINDOWS_MASK (p),
+		  0,0,
+		  MAKEROP4(SRCINVERT,SRCCOPY));
+	}
+      SelectObject (FRAME_MSWINDOWS_CDC (f),old);
     }
   else
     {
@@ -678,12 +692,10 @@
   int sbh = window_scrollbar_height (w);
   int sbw = window_scrollbar_width (w);
   RECT rect_dead, rect_paint;
-  struct frame *f;
   if (sbh == 0 || sbw == 0)
     return;
 
-  f = XFRAME (WINDOW_FRAME (w));
-  if (f->scrollbar_on_left)
+  if (!NILP (w->scrollbar_on_left_p))
     {
       rect_dead.left = WINDOW_LEFT (w);
       rect_dead.right = WINDOW_LEFT (w) + sbw;
@@ -694,7 +706,7 @@
       rect_dead.right = WINDOW_RIGHT (w);
     }
 
-  if (f->scrollbar_on_top)
+  if (!NILP (w->scrollbar_on_top_p))
     {
       rect_dead.top = WINDOW_TOP (w);
       rect_dead.bottom = WINDOW_TOP (w) + sbh;
@@ -707,8 +719,11 @@
     }
       
   if (IntersectRect (&rect_paint, &rect_dead, prc))
-    FillRect (FRAME_MSWINDOWS_DC (f), &rect_paint,
-	      (HBRUSH) (COLOR_BTNFACE+1));
+    {
+      struct frame *f = XFRAME (WINDOW_FRAME (w));
+      FillRect (FRAME_MSWINDOWS_DC (f), &rect_paint,
+		(HBRUSH) (COLOR_BTNFACE+1));
+    }
 }
 
 #endif /* HAVE_SCROLLBARS */
@@ -1191,7 +1206,7 @@
 
   /* XXX Not sure about this */
 #ifdef HAVE_SCROLLBARS
-  if (f->scrollbar_on_left)
+  if (!NILP (w->scrollbar_on_left_p))
     rect.left = WINDOW_LEFT (w);
   else
     rect.left = WINDOW_RIGHT (w) - MSWINDOWS_DIVIDER_WIDTH;
@@ -1201,7 +1216,7 @@
   rect.right = rect.left + MSWINDOWS_DIVIDER_WIDTH;
 
 #ifdef HAVE_SCROLLBARS
-  if (f->scrollbar_on_top)
+  if (!NILP (w->scrollbar_on_top_p))
     rect.top = WINDOW_TOP (w);
   else
 #endif