]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combobox.cpp
Take into account icon mask in wxStaticBitmap
[wxWidgets.git] / src / msw / combobox.cpp
index 6d31e99dbad9b9f263fed7445362e64e53322770..ceb2d59b8e8b51cc9220a852490674cfc8d4b6f3 100644 (file)
@@ -87,20 +87,33 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd,
 
     switch ( message )
     {
-        // forward some messages to the combobox
+        // forward some messages to the combobox to generate the appropriate
+        // wxEvents from them
         case WM_KEYUP:
         case WM_KEYDOWN:
         case WM_CHAR:
+        case WM_SETFOCUS:
+        case WM_KILLFOCUS:
             {
                 wxComboBox *combo = wxDynamicCast(win, wxComboBox);
-                wxCHECK_MSG( combo, 0, _T("should have combo as parent") );
-
-                if ( combo->MSWProcessEditMsg(message, wParam, lParam) )
+                if ( !combo )
+                {
+                    // we can get WM_KILLFOCUS while our parent is already half
+                    // destroyed and hence doesn't look like a combobx any
+                    // longer, check for it to avoid bogus assert failures
+                    if ( !win->IsBeingDeleted() )
+                    {
+                        wxFAIL_MSG( _T("should have combo as parent") );
+                    }
+                }
+                else if ( combo->MSWProcessEditMsg(message, wParam, lParam) )
+                {
+                    // handled by parent
                     return 0;
+                }
             }
             break;
 
-#if 0
         case WM_GETDLGCODE:
             {
                 wxCHECK_MSG( win, 0, _T("should have a parent") );
@@ -112,7 +125,6 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd,
                 }
             }
             break;
-#endif // 0
 
         // deal with tooltips here
 #if wxUSE_TOOLTIPS && defined(TTN_NEEDTEXT)
@@ -170,7 +182,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()));
@@ -196,6 +208,12 @@ bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam)
 
         case WM_KEYUP:
             return HandleKeyUp(wParam, lParam);
+
+        case WM_SETFOCUS:
+            return HandleSetFocus((WXHWND)wParam);
+
+        case WM_KILLFOCUS:
+            return HandleKillFocus((WXHWND)wParam);
     }
 
     return FALSE;
@@ -313,7 +331,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
 
     // 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++ )
     {