]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/combog.cpp
Fixes #10443: wxListCtrl::MoveToItem
[wxWidgets.git] / src / generic / combog.cpp
index 0db207c1528740d9ca55c78e2b2a07e05700cc71..7f354a8f3cac9625699f7645ab100c0f98fa9b60 100644 (file)
@@ -32,6 +32,7 @@
     #include "wx/combobox.h"
     #include "wx/dcclient.h"
     #include "wx/settings.h"
+    #include "wx/textctrl.h"
 #endif
 
 #include "wx/dcbuffer.h"
@@ -65,7 +66,7 @@
 #define TEXTCTRLXADJUST                 0 // position adjustment for wxTextCtrl, with zero indent
 #define TEXTCTRLYADJUST                 0
 #define TEXTXADJUST                     0 // how much is read-only text's x adjusted
-#define DEFAULT_DROPBUTTON_WIDTH        19
+#define DEFAULT_DROPBUTTON_WIDTH        22
 
 #else
 
@@ -159,7 +160,8 @@ bool wxGenericComboCtrl::Create(wxWindow *parent,
     border = wxBORDER_NONE;
 
     Customize( wxCC_BUTTON_OUTSIDE_BORDER |
-               wxCC_NO_TEXT_AUTO_SELECT );
+               wxCC_NO_TEXT_AUTO_SELECT |
+               wxCC_BUTTON_STAYS_DOWN );
 
 #endif
 
@@ -187,8 +189,8 @@ bool wxGenericComboCtrl::Create(wxWindow *parent,
     // Set background
     SetBackgroundStyle( wxBG_STYLE_CUSTOM ); // for double-buffering
 
-    // SetBestSize should be called last
-    SetBestSize(size);
+    // SetInitialSize should be called last
+    SetInitialSize(size);
 
     return true;
 }
@@ -235,7 +237,7 @@ void wxGenericComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
         // Set border colour
         wxPen pen1( wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT),
                     customBorder,
-                    wxSOLID );
+                    wxPENSTYLE_SOLID);
         dc.SetPen( pen1 );
 
         // area around both controls
@@ -265,7 +267,11 @@ void wxGenericComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
         dc.DrawRectangle(rect2);
     }
 
+#ifndef __WXMAC__  // see note in OnThemeChange
     wxColour winCol = GetBackgroundColour();
+#else
+    wxColour winCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
+#endif
     dc.SetBrush(winCol);
     dc.SetPen(winCol);
 
@@ -274,10 +280,12 @@ void wxGenericComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
 
     // clear main background
     dc.DrawRectangle(rect);
-
+    
     if ( !m_btn )
+    {
         // Standard button rendering
-        DrawButton(dc,rectb,true);
+        DrawButton(dc,rectb);
+    }
 
     // paint required portion on the control
     if ( (!m_text || m_widthCustomPaint) )
@@ -385,6 +393,7 @@ void wxGenericComboCtrl::SetCustomPaintWidth( int width )
             tc->RemoveEventHandler(m_textEvtHandler);
             delete m_textEvtHandler;
 
+#if wxUSE_VALIDATORS
             wxValidator* pValidator = tc->GetValidator();
             if ( pValidator )
             {
@@ -393,6 +402,7 @@ void wxGenericComboCtrl::SetCustomPaintWidth( int width )
                 delete pValidator;
             }
             else
+#endif
             {
                 CreateTextCtrl( tcCreateStyle, wxDefaultValidator );
             }
@@ -420,7 +430,8 @@ bool wxGenericComboCtrl::IsKeyPopupToggle(const wxKeyEvent& event) const
     }
     else
     {
-        if ( keycode == WXK_DOWN && event.AltDown() )
+        if ( (keycode == WXK_DOWN && event.AltDown()) ||
+             (keycode == WXK_F4) )
             return true;
     }
 
@@ -436,7 +447,7 @@ bool wxGenericComboCtrl::PerformAction(const wxControlAction& action,
     bool processed = false;
     if ( action == wxACTION_COMBOBOX_POPUP )
     {
-        if ( !m_isPopupShown )
+        if ( !IsPopupShown() )
         {
             ShowPopup();
 
@@ -445,7 +456,7 @@ bool wxGenericComboCtrl::PerformAction(const wxControlAction& action,
     }
     else if ( action == wxACTION_COMBOBOX_DISMISS )
     {
-        if ( m_isPopupShown )
+        if ( IsPopupShown() )
         {
             HidePopup();