X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ab1ce969dfb27f5d366ee6a0de3ff2bc0205b56a..01470e37412f2ddb1375f888d1d70b41de8d38b6:/src/univ/checkbox.cpp?ds=sidebyside diff --git a/src/univ/checkbox.cpp b/src/univ/checkbox.cpp index d02c0c1d0b..d07f1ad561 100644 --- a/src/univ/checkbox.cpp +++ b/src/univ/checkbox.cpp @@ -39,12 +39,26 @@ #include "wx/univ/inphand.h" #include "wx/univ/colschem.h" +// ---------------------------------------------------------------------------- +// wxStdCheckboxInputHandler: handles the mouse events for the check and radio +// boxes (handling the keyboard input is simple, but its handling differs a +// lot between GTK and MSW, so a new class should be derived for this) +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxStdCheckboxInputHandler : public wxStdInputHandler +{ +public: + wxStdCheckboxInputHandler(wxInputHandler *inphand); + + // we have to override this one as wxStdButtonInputHandler version works + // only with the buttons + virtual bool HandleActivation(wxInputConsumer *consumer, bool activated); +}; + // ============================================================================ // implementation // ============================================================================ -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) - // ---------------------------------------------------------------------------- // wxCheckBox // ---------------------------------------------------------------------------- @@ -64,11 +78,12 @@ bool wxCheckBox::Create(wxWindow *parent, const wxValidator& validator, const wxString &name) { + WXValidateStyle( &style ); if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; SetLabel(label); - SetBestSize(size); + SetInitialSize(size); CreateInputHandler(wxINP_HANDLER_CHECKBOX); @@ -201,7 +216,7 @@ void wxCheckBox::DoSet3StateValue(wxCheckBoxState state) { case wxCHK_UNCHECKED: status = Status_Unchecked; break; case wxCHK_CHECKED: status = Status_Checked; break; - default: wxFAIL_MSG(_T("Unknown checkbox state")); + default: wxFAIL_MSG(wxT("Unknown checkbox state")); case wxCHK_UNDETERMINED: status = Status_3rdState; break; } if ( status != m_status ) @@ -323,12 +338,20 @@ bool wxCheckBox::PerformAction(const wxControlAction& action, return true; } +/* static */ +wxInputHandler *wxCheckBox::CreateStdInputHandler(wxInputHandler *handlerDef) +{ + static wxStdCheckboxInputHandler s_handler(handlerDef); + + return &s_handler; +} + // ---------------------------------------------------------------------------- // wxStdCheckboxInputHandler // ---------------------------------------------------------------------------- -wxStdCheckboxInputHandler::wxStdCheckboxInputHandler(wxInputHandler *inphand) - : wxStdButtonInputHandler(inphand) +wxStdCheckboxInputHandler::wxStdCheckboxInputHandler(wxInputHandler *def) + : wxStdInputHandler(wxButton::GetStdInputHandler(def)) { }