Update the text part of combobox when changing text of selected item in wxGTK.

Add a call to SetValue() to wxComboBox::SetString() in wxGTK if the item being
changed is the currently selected one. The new behaviour is consistent with
wxMSW and also makes more sense.

Document it too to remove any doubts about what is supposed to happen in this
case.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70880 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-03-11 23:55:19 +00:00
parent dfb4176ac5
commit a9ed8caa09
3 changed files with 25 additions and 1 deletions

View File

@ -88,6 +88,9 @@ public:
{
return wxItemContainer::GetStringSelection();
}
virtual void SetString(unsigned int n, const wxString& string);
virtual void Popup();
virtual void Dismiss();

View File

@ -314,7 +314,15 @@ public:
virtual int FindString(const wxString& s, bool bCase = false) const;
virtual wxString GetString(unsigned int n) const;
virtual wxString GetStringSelection() const;
virtual void SetString(unsigned int n, const wxString& s);
/**
Changes the text of the specified combobox item.
Notice that if the item is the currently selected one, i.e. if its text
is displayed in the text part of the combobox, then the text is also
replaced with the new @a text.
*/
virtual void SetString(unsigned int n, const wxString& text);
virtual unsigned int GetCount() const;
};

View File

@ -282,6 +282,19 @@ void wxComboBox::SetValue(const wxString& value)
wxTextEntry::SetValue(value);
}
void wxComboBox::SetString(unsigned int n, const wxString& text)
{
wxChoice::SetString(n, text);
if ( static_cast<int>(n) == GetSelection() )
{
// We also need to update the currently shown text, for consistency
// with wxMSW and also because it makes sense as leaving the old string
// in the text but not in the list would be confusing to the user.
SetValue(text);
}
}
// ----------------------------------------------------------------------------
// standard event handling
// ----------------------------------------------------------------------------