]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/bmpbuttn.cpp
VTK wrapper of vtkRenderWindow for wxPython. Tested on MSW so far.
[wxWidgets.git] / src / msw / bmpbuttn.cpp
index daf17cec627a438df146759aae689b8421d1e8b4..c476b1aeed92cdfebcf3636dada2bacc69a9742a 100644 (file)
@@ -155,7 +155,20 @@ bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item)
         y1 ++;
     }
 
-    ::BitBlt(hDC, x1, y1, bitmap->GetWidth(), bitmap->GetHeight(), memDC, 0, 0, SRCCOPY);
+    wxMask *mask = bitmap->GetMask();
+    if ( mask )
+    {
+        ::MaskBlt(hDC, x1, y1, bitmap->GetWidth(), bitmap->GetHeight(), // dst
+                  memDC, 0, 0,                                          // src
+                  (HBITMAP)mask->GetMaskBitmap(), 0, 0,                 // mask
+                  MAKEROP4(SRCPAINT, SRCCOPY));
+    }
+    else
+    {
+        ::BitBlt(hDC, x1, y1, bitmap->GetWidth(), bitmap->GetHeight(), // dst
+                 memDC, 0, 0,                                          // src
+                 SRCCOPY);
+    }
 
     if ( (state & ODS_DISABLED) && (GetWindowStyleFlag() & wxBU_AUTODRAW) )
         DrawButtonDisable( (WXHDC) hDC, lpDIS->rcItem.left, lpDIS->rcItem.top, lpDIS->rcItem.right, lpDIS->rcItem.bottom, TRUE ) ;
@@ -232,7 +245,8 @@ void wxBitmapButton::DrawFace( WXHDC dc, int left, int top, int right, int botto
   DeleteObject(brushFace);
 }
 
-#define FOCUS_MARGIN 6
+// VZ: should be at the very least less than wxDEFAULT_BUTTON_MARGIN
+#define FOCUS_MARGIN 3
 
 void wxBitmapButton::DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel )
 {