X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/390f8114604241cd21193ddb2c624ca21e1f1322..bc429ce01f519f3edae182b516cb15b8d2df54a7:/src/univ/combobox.cpp diff --git a/src/univ/combobox.cpp b/src/univ/combobox.cpp index 8647a82611..28ae78ee6d 100644 --- a/src/univ/combobox.cpp +++ b/src/univ/combobox.cpp @@ -44,6 +44,19 @@ #include "wx/univ/inphand.h" #include "wx/univ/theme.h" +// ---------------------------------------------------------------------------- +// wxStdComboBoxInputHandler: allows the user to open/close the combo from kbd +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxStdComboBoxInputHandler : public wxStdInputHandler +{ +public: + wxStdComboBoxInputHandler(wxInputHandler *inphand); + + virtual bool HandleKey(wxInputConsumer *consumer, + const wxKeyEvent& event, + bool pressed); +}; // ---------------------------------------------------------------------------- // wxComboListBox is a listbox modified to be used as a popup window in a @@ -130,8 +143,11 @@ wxString wxComboListBox::GetStringValue() const void wxComboListBox::SetStringValue(const wxString& value) { - if ( !value.empty() && (FindString(value) != wxNOT_FOUND) ) - wxListBox::SetStringSelection(value); + if ( !value.empty() ) + { + if (FindString(value) != wxNOT_FOUND) + wxListBox::SetStringSelection(value); + } else wxListBox::SetSelection(-1); } @@ -527,5 +543,12 @@ bool wxStdComboBoxInputHandler::HandleKey(wxInputConsumer *consumer, return wxStdInputHandler::HandleKey(consumer, event, pressed); } +/* static */ +wxInputHandler *wxComboBox::GetStdInputHandler(wxInputHandler *handlerDef) +{ + static wxStdComboBoxInputHandler s_handler(handlerDef); + + return &s_handler; +} #endif // wxUSE_COMBOBOX