#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
{
public:
// ctor and dtor
- wxComboListBox(wxComboControlBase *combo);
+ wxComboListBox();
virtual ~wxComboListBox();
// implement wxComboPopup methods
EVT_LEFT_UP(wxComboListBox::OnLeftUp)
END_EVENT_TABLE()
-IMPLEMENT_DYNAMIC_CLASS2(wxComboBox, wxControl, wxComboControl)
+IMPLEMENT_DYNAMIC_CLASS2(wxComboBox, wxControl, wxComboCtrl)
// ============================================================================
// implementation
// wxComboListBox
// ----------------------------------------------------------------------------
-wxComboListBox::wxComboListBox(wxComboControlBase *combo)
- : wxListBox(),
- wxComboPopup(combo)
+wxComboListBox::wxComboListBox() : wxListBox(), wxComboPopup()
{
}
void wxComboListBox::SetStringValue(const wxString& value)
{
if ( !value.empty() )
- wxListBox::SetStringSelection(value);
+ {
+ if (FindString(value) != wxNOT_FOUND)
+ wxListBox::SetStringSelection(value);
+ }
else
wxListBox::SetSelection(-1);
-
- /*
- // PRE-GLOBAL WXCOMBOCONTROL CODE:
-
- // FindItem() would just find the current item for an empty string (it
- // always matches), but we want to show the first one in such case
- if ( value.empty() )
- {
- if ( GetCount() > 0 )
- {
- wxListBox::SetSelection(0);
- }
- //else: empty listbox - nothing to do
- }
- else if ( !FindItem(value) )
- {
- // no match att all
- }
- */
}
void wxComboListBox::OnPopup()
{
// 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;
}
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;
}
- wxComboListBox *combolbox = new wxComboListBox(this);
+ wxComboListBox *combolbox = new wxComboListBox();
SetPopupControl(combolbox);
m_lbox = combolbox;
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()
return wxStdInputHandler::HandleKey(consumer, event, pressed);
}
+/* static */
+wxInputHandler *wxComboBox::GetStdInputHandler(wxInputHandler *handlerDef)
+{
+ static wxStdComboBoxInputHandler s_handler(handlerDef);
+
+ return &s_handler;
+}
#endif // wxUSE_COMBOBOX