]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/datectlg.cpp
Applied dir control token patch.
[wxWidgets.git] / src / generic / datectlg.cpp
index f44aec61ddfc6fd2f94b5362465a88ca5d4a8ae7..8a1c2bcf2ee02fb22df5707611a66015f6083a86 100644 (file)
@@ -155,10 +155,6 @@ bool wxDropdownButton::Create(wxWindow *parent,
                                  pos, wxDefaultSize, BTN_FLAGS, validator) )
         return false;
 
-#if (BTNFLAGS & wxBU_AUTODRAW ) == 0
-    m_windowStyle |= wxBU_AUTODRAW;
-#endif
-
     const wxSize sz = GetSize();
     int w = chkBmp.GetWidth(),
         h = chkBmp.GetHeight();
@@ -196,8 +192,36 @@ void wxDropdownButton::DoMoveWindow(int x, int y, int w, int h)
         wxBitmap bmp(bw, bh);
         dc.SelectObject(bmp);
 
-        wxRendererNative::Get().DrawComboBoxDropButton(this, dc, wxRect(0,0,bw, bh));
+        wxRect r(0,0,bw, bh);
+        wxRendererNative& renderer = wxRendererNative::Get();
+        
+#ifdef __WXGTK__
+        wxColour magic(255,0,255);
+        dc.SetBrush( wxBrush( magic ) );
+        dc.SetPen( *wxTRANSPARENT_PEN );
+        dc.DrawRectangle(0,0,bw,bh);
+        renderer.DrawComboBoxDropButton(this, dc, r);
+        wxMask *mask = new wxMask( bmp, magic );
+        bmp.SetMask( mask );
+#else
+        renderer.DrawComboBoxDropButton(this, dc, r);
+#endif
         SetBitmapLabel(bmp);
+
+        wxBitmap bmpSel(bw, bh);
+        dc.SelectObject(bmpSel);
+        
+#ifdef __WXGTK__
+        dc.SetBrush( wxBrush( magic ) );
+        dc.SetPen( *wxTRANSPARENT_PEN );
+        dc.DrawRectangle(0,0,bw,bh);
+        renderer.DrawComboBoxDropButton(this, dc, r, wxCONTROL_PRESSED);
+        mask = new wxMask( bmpSel, magic );
+        bmpSel.SetMask( mask );
+#else
+        renderer.DrawComboBoxDropButton(this, dc, r, wxCONTROL_PRESSED);
+#endif        
+        SetBitmapSelected(bmpSel);
     }
 
     wxBitmapButton::DoMoveWindow(x, y, w, h);
@@ -468,8 +492,8 @@ bool wxDatePickerCtrlGeneric::Enable(bool enable)
 
     if ( !enable )
     {
-        if ( m_cal )
-            m_cal->Hide();
+        if ( m_popup )
+            m_popup->Hide();
     }
 
     if ( m_btn )