X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a290fa5a7deebe9d96c0c0089d18e27d4bd9b624..abb6edd197b78d24f762257a7880539556d10505:/src/univ/checklst.cpp diff --git a/src/univ/checklst.cpp b/src/univ/checklst.cpp index 6ed02a5f9c..95e1af791d 100644 --- a/src/univ/checklst.cpp +++ b/src/univ/checklst.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: univ/checklst.cpp +// Name: src/univ/checklst.cpp // Purpose: wxCheckListBox implementation // Author: Vadim Zeitlin // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "univchecklst.h" -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -29,11 +25,11 @@ #if wxUSE_CHECKLISTBOX +#include "wx/checklst.h" + #ifndef WX_PRECOMP #include "wx/log.h" - #include "wx/dcclient.h" - #include "wx/checklst.h" #include "wx/validate.h" #endif @@ -41,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 // ============================================================================ @@ -107,17 +119,17 @@ bool wxCheckListBox::Create(wxWindow *parent, // wxCheckListBox functions // ---------------------------------------------------------------------------- -bool wxCheckListBox::IsChecked(size_t item) const +bool wxCheckListBox::IsChecked(unsigned int item) const { - wxCHECK_MSG( item < m_checks.GetCount(), false, + wxCHECK_MSG( IsValid(item), false, _T("invalid index in wxCheckListBox::IsChecked") ); return m_checks[item] != 0; } -void wxCheckListBox::Check(size_t item, bool check) +void wxCheckListBox::Check(unsigned int item, bool check) { - wxCHECK_RET( item < m_checks.GetCount(), + wxCHECK_RET( IsValid(item), _T("invalid index in wxCheckListBox::Check") ); // intermediate var is needed to avoid compiler warning with VC++ @@ -134,9 +146,9 @@ void wxCheckListBox::Check(size_t item, bool check) // methods forwarded to wxListBox // ---------------------------------------------------------------------------- -void wxCheckListBox::Delete(int n) +void wxCheckListBox::Delete(unsigned int n) { - wxCHECK_RET( n < GetCount(), _T("invalid index in wxListBox::Delete") ); + wxCHECK_RET( IsValid(n), _T("invalid index in wxListBox::Delete") ); wxListBox::Delete(n); @@ -153,12 +165,12 @@ int wxCheckListBox::DoAppend(const wxString& item) return pos; } -void wxCheckListBox::DoInsertItems(const wxArrayString& items, int pos) +void wxCheckListBox::DoInsertItems(const wxArrayString& items, unsigned int pos) { wxListBox::DoInsertItems(items, pos); - size_t count = items.GetCount(); - for ( size_t n = 0; n < count; n++ ) + unsigned int count = items.GetCount(); + for ( unsigned int n = 0; n < count; n++ ) { m_checks.Insert(false, pos + n); } @@ -169,8 +181,8 @@ void wxCheckListBox::DoSetItems(const wxArrayString& items, void **clientData) // call it first as it does DoClear() wxListBox::DoSetItems(items, clientData); - size_t count = items.GetCount(); - for ( size_t n = 0; n < count; n++ ) + unsigned int count = items.GetCount(); + for ( unsigned int n = 0; n < count; n++ ) { m_checks.Add(false); } @@ -230,13 +242,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)) { } @@ -247,7 +267,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, @@ -269,7 +289,7 @@ bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer, if ( x >= 0 && x < renderer->GetCheckBitmapSize().x && item >= 0 && - item < lbox->GetCount() ) + (unsigned int)item < lbox->GetCount() ) { lbox->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE, item); @@ -277,7 +297,7 @@ bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer, } } - return wxStdListboxInputHandler::HandleMouse(consumer, event); + return wxStdInputHandler::HandleMouse(consumer, event); } #endif // wxUSE_CHECKLISTBOX