From 682214d5c6ec3e56dbdfd0c97d70d87e614b38c2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= Date: Fri, 18 Mar 2005 19:32:20 +0000 Subject: [PATCH] Fixed bug #1022383: 'several ComboBoxes appear selected' git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/combobox.h | 3 --- src/msw/combobox.cpp | 45 ++++++++++++++++++--------------------- 2 files changed, 21 insertions(+), 27 deletions(-) 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 // ---------------------------------------------------------------------------- -- 2.50.0