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:
@@ -136,9 +136,6 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
|
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
|
// common part of all ctors
|
||||||
void Init() { m_selectionOld = -1; }
|
void Init() { m_selectionOld = -1; }
|
||||||
|
@@ -241,6 +241,9 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd,
|
|||||||
|
|
||||||
WXLRESULT wxComboBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
|
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
|
// handle WM_CTLCOLOR messages from our EDIT control to be able to set its
|
||||||
// colour correctly (to be the same as our own one)
|
// colour correctly (to be the same as our own one)
|
||||||
switch ( nMsg )
|
switch ( nMsg )
|
||||||
@@ -253,9 +256,26 @@ WXLRESULT wxComboBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara
|
|||||||
m_value = GetString(wParam);
|
m_value = GetString(wParam);
|
||||||
m_selectionOld = -1;
|
m_selectionOld = -1;
|
||||||
break;
|
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)
|
bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam)
|
||||||
@@ -483,29 +503,6 @@ WXDWORD wxComboBox::MSWGetStyle(long style, WXDWORD *exstyle) const
|
|||||||
return msStyle;
|
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
|
// wxComboBox text control-like methods
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user