X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e051d008eb8991b520fcddcffadeefbc39e42681..250e4028f86b5c7b1c31011faef839054c58274e:/src/univ/combobox.cpp diff --git a/src/univ/combobox.cpp b/src/univ/combobox.cpp index bda0e3e9fb..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 @@ -90,7 +103,7 @@ BEGIN_EVENT_TABLE(wxComboListBox, wxListBox) EVT_LEFT_UP(wxComboListBox::OnLeftUp) END_EVENT_TABLE() -IMPLEMENT_DYNAMIC_CLASS2(wxComboBox, wxControl, wxComboControl) +IMPLEMENT_DYNAMIC_CLASS2(wxComboBox, wxControl, wxComboCtrl) // ============================================================================ // implementation @@ -131,7 +144,10 @@ wxString wxComboListBox::GetStringValue() const void wxComboListBox::SetStringValue(const wxString& value) { if ( !value.empty() ) - wxListBox::SetStringSelection(value); + { + if (FindString(value) != wxNOT_FOUND) + wxListBox::SetStringSelection(value); + } else wxListBox::SetSelection(-1); } @@ -149,7 +165,7 @@ bool wxComboListBox::PerformAction(const wxControlAction& action, { // we don't let the listbox handle this as instead of just using the // single key presses, as usual, we use the text ctrl value as prefix - // and this is done by wxComboControl itself + // and this is done by wxComboCtrl itself return true; } @@ -232,7 +248,7 @@ bool wxComboBox::Create(wxWindow *parent, const wxValidator& validator, const wxString& name) { - if ( !wxComboControl::Create(parent, id, value, pos, size, style, + if ( !wxComboCtrl::Create(parent, id, value, pos, size, style, validator, name) ) { return false; @@ -257,12 +273,12 @@ wxComboBox::~wxComboBox() wxString wxComboBox::GetValue() const { - return wxComboControl::GetValue(); + return wxComboCtrl::GetValue(); } void wxComboBox::SetValue(const wxString& value) { - wxComboControl::SetValue(value); + wxComboCtrl::SetValue(value); } void wxComboBox::Copy() @@ -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