]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combobox.cpp
Updated projects/makefiles
[wxWidgets.git] / src / msw / combobox.cpp
index c5368a57d1d3bbc753c99dca88ac1cf640a9f465..f7c97122e14b98f87e92c5901f35fac8443cffa7 100644 (file)
@@ -170,7 +170,7 @@ WXHBRUSH wxComboBox::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSE
     wxColour colBack = GetBackgroundColour();
 
     if (!IsEnabled())
-        colBack = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
+        colBack = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
 
     ::SetBkColor(hdc, wxColourToRGB(colBack));
     ::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
@@ -231,11 +231,22 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
         case CBN_EDITCHANGE:
             {
                 wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, GetId());
+
                 // if sel != -1, value was initialized above (and we can't use
                 // GetValue() here as it would return the old selection and we
                 // want the new one)
                 if ( sel == -1 )
+                {
                     value = GetValue();
+                }
+                else // we're synthesizing text updated event from sel change
+                {
+                    // we need to do this because the user code expects
+                    // wxComboBox::GetValue() to return the new value from
+                    // "text updated" handler but it hadn't been updated yet
+                    SetValue(value);
+                }
+
                 event.SetString(value);
                 event.SetEventObject(this);
                 ProcessCommand(event);
@@ -300,11 +311,9 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
     if ( !MSWCreateControl(_T("COMBOBOX"), msStyle) )
         return FALSE;
 
-    SetSize(pos.x, pos.y, size.x, size.y);
-
     // A choice/combobox normally has a white background (or other, depending
     // on global settings) rather than inheriting the parent's background colour.
-    SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
+    SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
 
     for ( int i = 0; i < n; i++ )
     {
@@ -316,6 +325,10 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
         SetValue(value);
     }
 
+    // do this after appending the values to the combobox so that autosizing
+    // works correctly
+    SetSize(pos.x, pos.y, size.x, size.y);
+
     // a (not read only) combobox is, in fact, 2 controls: the combobox itself
     // and an edit control inside it and if we want to catch events from this
     // edit control, we must subclass it as well