From 5de69dd366b43dc43259b34728272ae550ade92b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 9 Feb 2008 15:22:15 +0000 Subject: [PATCH] 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/trunk@51616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/choice.h | 2 ++ src/msw/choice.cpp | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/wx/msw/choice.h b/include/wx/msw/choice.h index 402948e08a..8be304b782 100644 --- a/include/wx/msw/choice.h +++ b/include/wx/msw/choice.h @@ -66,6 +66,8 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxChoiceNameStr); + virtual void SetLabel(const wxString& label); + virtual unsigned int GetCount() const; virtual int GetSelection() const; virtual int GetCurrentSelection() const; diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp index 9eec9c2332..7b73e6f6f1 100644 --- a/src/msw/choice.cpp +++ b/src/msw/choice.cpp @@ -158,6 +158,21 @@ bool wxChoice::CreateAndInit(wxWindow *parent, return true; } +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::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, -- 2.45.2