Fixed bug #1022383: 'several ComboBoxes appear selected'
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
return wxChoice::MSWWindowProc(nMsg, wParam, lParam);
|
||||
WXLRESULT result = wxChoice::MSWWindowProc(nMsg, wParam, lParam);
|
||||
|
||||
if(isSize)
|
||||
{
|
||||
long fromNew, toNew;
|
||||
GetSelection(&fromNew, &toNew);
|
||||
|
||||
if ( fromOld != fromNew || toOld != toNew )
|
||||
{
|
||||
SetSelection(fromOld, toOld);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user