]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combo.cpp
fixed crash in wxDb::Open() in Unicode build due to wrong interpretation of BufferLen...
[wxWidgets.git] / src / msw / combo.cpp
index 7ebac8b6aa5858503c7b0367f50f49ff85f76df0..401dc1033d282bd915cdca92743062afe770dfbe 100644 (file)
@@ -239,9 +239,12 @@ 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 )
+void wxComboCtrl::DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags ) const
 {
     wxUxThemeEngine* theme = (wxUxThemeEngine*) NULL;
+
+    // Constructor only calls GetHWND() const, so it should be safe
+    // to cast "this" to const.
     wxUxThemeHandle hTheme(this, L"COMBOBOX");
     //COLORREF cref;
 
@@ -295,8 +298,14 @@ void wxComboCtrl::DrawFocusBackground( wxDC& dc, const wxRect& rect, int flags )
     wxRect selRect(rect);
     selRect.y += focusSpacingY;
     selRect.height -= (focusSpacingY*2);
-    selRect.x += m_widthCustomPaint + focusSpacingX;
-    selRect.width -= m_widthCustomPaint + (focusSpacingX*2);
+
+    int wcp = 0;
+
+    if ( !(flags & wxCONTROL_ISSUBMENU) )
+        wcp += m_widthCustomPaint;
+
+    selRect.x += wcp + focusSpacingX;
+    selRect.width -= wcp + (focusSpacingX*2);
 
     if ( hTheme )
         theme = wxUxThemeEngine::GetIfActive();