]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combobox.cpp
Clean up string table before uninitializing DDEML
[wxWidgets.git] / src / msw / combobox.cpp
index aa72d70d57d8899452ab2e0967c389a89d2ca78c..0e81ed856a2c3f3254328a59bb2a7c39c2625957 100644 (file)
@@ -96,14 +96,24 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd,
         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") );
@@ -115,7 +125,6 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd,
                 }
             }
             break;
-#endif // 0
 
         // deal with tooltips here
 #if wxUSE_TOOLTIPS && defined(TTN_NEEDTEXT)
@@ -295,6 +304,11 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
                         const wxValidator& validator,
                         const wxString& name)
 {
+    // pretend that wxComboBox is hidden while it is positioned and resized and
+    // show it only right before leaving this method because otherwise there is
+    // some noticeable flicker while the control rearranges itself
+    m_isShown = FALSE;
+
     // first create wxWin object
     if ( !CreateControl(parent, id, pos, size, style, validator, name) )
         return FALSE;
@@ -351,6 +365,9 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
                                       );
     }
 
+    // and finally, show the control
+    Show(TRUE);
+
     return TRUE;
 }