X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e6e839336c9f9a869d40b3c7ed212e6f6641d04f..c4e43bea7b24f7b7f58e3f87786490cd81abf0a7:/src/univ/checklst.cpp diff --git a/src/univ/checklst.cpp b/src/univ/checklst.cpp index 5633b9d24c..3a85960386 100644 --- a/src/univ/checklst.cpp +++ b/src/univ/checklst.cpp @@ -37,6 +37,22 @@ #include "wx/univ/inphand.h" #include "wx/univ/theme.h" +// ---------------------------------------------------------------------------- +// wxStdCheckListBoxInputHandler +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxStdCheckListboxInputHandler : public wxStdInputHandler +{ +public: + wxStdCheckListboxInputHandler(wxInputHandler *inphand); + + virtual bool HandleKey(wxInputConsumer *consumer, + const wxKeyEvent& event, + bool pressed); + virtual bool HandleMouse(wxInputConsumer *consumer, + const wxMouseEvent& event); +}; + // ============================================================================ // implementation of wxCheckListBox // ============================================================================ @@ -130,46 +146,16 @@ void wxCheckListBox::Check(unsigned int item, bool check) // methods forwarded to wxListBox // ---------------------------------------------------------------------------- -void wxCheckListBox::Delete(unsigned int n) +void wxCheckListBox::DoDeleteOneItem(unsigned int n) { - wxCHECK_RET( IsValid(n), _T("invalid index in wxListBox::Delete") ); - - wxListBox::Delete(n); + wxListBox::DoDeleteOneItem(n); m_checks.RemoveAt(n); } -int wxCheckListBox::DoAppend(const wxString& item) +void wxCheckListBox::OnItemInserted(unsigned int pos) { - int pos = wxListBox::DoAppend(item); - - // the item is initially unchecked m_checks.Insert(false, pos); - - return pos; -} - -void wxCheckListBox::DoInsertItems(const wxArrayString& items, unsigned int pos) -{ - wxListBox::DoInsertItems(items, pos); - - unsigned int count = items.GetCount(); - for ( unsigned int n = 0; n < count; n++ ) - { - m_checks.Insert(false, pos + n); - } -} - -void wxCheckListBox::DoSetItems(const wxArrayString& items, void **clientData) -{ - // call it first as it does DoClear() - wxListBox::DoSetItems(items, clientData); - - unsigned int count = items.GetCount(); - for ( unsigned int n = 0; n < count; n++ ) - { - m_checks.Add(false); - } } void wxCheckListBox::DoClear() @@ -226,13 +212,21 @@ bool wxCheckListBox::PerformAction(const wxControlAction& action, return true; } +/* static */ +wxInputHandler *wxCheckListBox::GetStdInputHandler(wxInputHandler *handlerDef) +{ + static wxStdCheckListboxInputHandler s_handler(handlerDef); + + return &s_handler; +} + // ---------------------------------------------------------------------------- // wxStdCheckListboxInputHandler // ---------------------------------------------------------------------------- wxStdCheckListboxInputHandler:: wxStdCheckListboxInputHandler(wxInputHandler *inphand) - : wxStdListboxInputHandler(inphand) + : wxStdInputHandler(wxListBox::GetStdInputHandler(inphand)) { } @@ -243,7 +237,7 @@ bool wxStdCheckListboxInputHandler::HandleKey(wxInputConsumer *consumer, if ( pressed && (event.GetKeyCode() == WXK_SPACE) ) consumer->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE); - return wxStdListboxInputHandler::HandleKey(consumer, event, pressed); + return wxStdInputHandler::HandleKey(consumer, event, pressed); } bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer, @@ -273,7 +267,7 @@ bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer, } } - return wxStdListboxInputHandler::HandleMouse(consumer, event); + return wxStdInputHandler::HandleMouse(consumer, event); } #endif // wxUSE_CHECKLISTBOX