]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combo.cpp
[ 1560860 ] wxComboCtrl EVT_TEXT filtering.
[wxWidgets.git] / src / msw / combo.cpp
index 124204b43f69d7a614a3423b831fdc73a43ee834..3c289257191905a23dc5bcb6043e9f64cbede853 100644 (file)
@@ -239,7 +239,7 @@ static void wxMSWDrawFocusRect( wxDC& dc, const wxRect& rect )
 }
 
 // draw focus background on area in a way typical on platform
-void wxComboCtrl::DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags ) const
+void wxComboCtrl::PrepareBackground( wxDC& dc, const wxRect& rect, int flags ) const
 {
     wxUxThemeEngine* theme = (wxUxThemeEngine*) NULL;
 
@@ -376,6 +376,11 @@ void wxComboCtrl::DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags )
     if ( drawDottedEdge )
         wxMSWDrawFocusRect(dc,selRect);
 
+    // Don't clip exactly to the selection rectangle so we can draw
+    // to the non-selected area in front of it.
+    wxRect clipRect(rect.x,rect.y,
+                    (selRect.x+selRect.width)-rect.x-1,rect.height);
+    dc.SetClippingRegion(clipRect);
 }
 
 void wxComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
@@ -484,7 +489,7 @@ void wxComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
 
 void wxComboCtrl::OnMouseEvent( wxMouseEvent& event )
 {
-    bool isOnButtonArea = m_btnArea.Inside(event.m_x,event.m_y);
+    bool isOnButtonArea = m_btnArea.Contains(event.m_x,event.m_y);
     int handlerFlags = isOnButtonArea ? wxCC_MF_ON_BUTTON : 0;
 
     // Preprocessing fabricates double-clicks and prevents