don't lose the contents of the combobox if it was set to a value not in a list and a popup has been opened and closed (patch 1883474)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@51616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -130,6 +130,8 @@ wxMSW:
|
|||||||
- Fix assert when using owner-drawn menu items with the newest (Vista) SDK.
|
- Fix assert when using owner-drawn menu items with the newest (Vista) SDK.
|
||||||
- Fixed wxTextCtrl to not process clipboard events twice if there's
|
- Fixed wxTextCtrl to not process clipboard events twice if there's
|
||||||
a custom wxEVT_COMMAND_TEXT_* event handler.
|
a custom wxEVT_COMMAND_TEXT_* event handler.
|
||||||
|
- Fix wxComboBox to not lose the current value if it was programmatically set
|
||||||
|
to a value not in a list of choices on popup close (Kolya Kosenko)
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -66,6 +66,8 @@ public:
|
|||||||
const wxValidator& validator = wxDefaultValidator,
|
const wxValidator& validator = wxDefaultValidator,
|
||||||
const wxString& name = wxChoiceNameStr);
|
const wxString& name = wxChoiceNameStr);
|
||||||
|
|
||||||
|
virtual void SetLabel(const wxString& label);
|
||||||
|
|
||||||
virtual void Delete(unsigned int n);
|
virtual void Delete(unsigned int n);
|
||||||
virtual void Clear();
|
virtual void Clear();
|
||||||
|
|
||||||
|
@@ -172,6 +172,21 @@ bool wxChoice::Create(wxWindow *parent,
|
|||||||
style, validator, name);
|
style, validator, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxChoice::SetLabel(const wxString& label)
|
||||||
|
{
|
||||||
|
if ( FindString(label) == wxNOT_FOUND )
|
||||||
|
{
|
||||||
|
// unless we explicitly do this here, CB_GETCURSEL will continue to
|
||||||
|
// return the index of the previously selected item which will result
|
||||||
|
// in wrongly replacing the value being set now with the previously
|
||||||
|
// value if the user simply opens and closes (without selecting
|
||||||
|
// anything) the combobox popup
|
||||||
|
SetSelection(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxChoiceBase::SetLabel(label);
|
||||||
|
}
|
||||||
|
|
||||||
bool wxChoice::MSWShouldPreProcessMessage(WXMSG *pMsg)
|
bool wxChoice::MSWShouldPreProcessMessage(WXMSG *pMsg)
|
||||||
{
|
{
|
||||||
MSG *msg = (MSG *) pMsg;
|
MSG *msg = (MSG *) pMsg;
|
||||||
|
Reference in New Issue
Block a user