From: Włodzimierz Skiba Date: Fri, 18 Mar 2005 19:32:20 +0000 (+0000) Subject: Fixed bug #1022383: 'several ComboBoxes appear selected' X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/682214d5c6ec3e56dbdfd0c97d70d87e614b38c2 Fixed bug #1022383: 'several ComboBoxes appear selected' git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/msw/combobox.h b/include/wx/msw/combobox.h index 27caec6e34..4a841ec05b 100644 --- a/include/wx/msw/combobox.h +++ b/include/wx/msw/combobox.h @@ -136,9 +136,6 @@ public: protected: virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const; - virtual void DoSetSize(int x, int y, - int width, int height, - int sizeFlags = wxSIZE_AUTO); // common part of all ctors void Init() { m_selectionOld = -1; } diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index 38ec288a72..04c3639c91 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -241,6 +241,9 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd, WXLRESULT wxComboBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { + bool isSize = false; + long fromOld, toOld; + // handle WM_CTLCOLOR messages from our EDIT control to be able to set its // colour correctly (to be the same as our own one) switch ( nMsg ) @@ -253,9 +256,26 @@ WXLRESULT wxComboBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara m_value = GetString(wParam); m_selectionOld = -1; break; + case WM_SIZE: + GetSelection(&fromOld, &toOld); + isSize = true; + break; + } + + WXLRESULT result = wxChoice::MSWWindowProc(nMsg, wParam, lParam); + + if(isSize) + { + long fromNew, toNew; + GetSelection(&fromNew, &toNew); + + if ( fromOld != fromNew || toOld != toNew ) + { + SetSelection(fromOld, toOld); + } } - return wxChoice::MSWWindowProc(nMsg, wParam, lParam); + return result; } bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam) @@ -483,29 +503,6 @@ WXDWORD wxComboBox::MSWGetStyle(long style, WXDWORD *exstyle) const return msStyle; } -// ---------------------------------------------------------------------------- -// wxComboBox geometry -// ---------------------------------------------------------------------------- - -void -wxComboBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) -{ - // work around a Windows bug (search for "Bug in Windows Combobox" in - // Google Groups): resizing the combobox changes the selection in it - long fromOld, toOld; - GetSelection(&fromOld, &toOld); - - wxChoice::DoSetSize(x, y, width, height, sizeFlags); - - long fromNew, toNew; - GetSelection(&fromNew, &toNew); - - if ( fromOld != fromNew || toOld != toNew ) - { - SetSelection(fromOld, toOld); - } -} - // ---------------------------------------------------------------------------- // wxComboBox text control-like methods // ----------------------------------------------------------------------------