/////////////////////////////////////////////////////////////////////////////
-// Name: univ/checkbox.cpp
+// Name: src/univ/checkbox.cpp
// Purpose: wxCheckBox implementation
// Author: Vadim Zeitlin
// Modified by:
// Created: 25.08.00
-// RCS-ID: $Id$
// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if wxUSE_CHECKBOX
+#include "wx/checkbox.h"
+
#ifndef WX_PRECOMP
#include "wx/dcclient.h"
- #include "wx/checkbox.h"
#include "wx/validate.h"
#include "wx/button.h" // for wxACTION_BUTTON_XXX
#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
// ----------------------------------------------------------------------------
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);
wxBitmap wxCheckBox::GetBitmap(State state, Status status) const
{
wxBitmap bmp = m_bitmaps[state][status];
- if ( !bmp.Ok() )
+ if ( !bmp.IsOk() )
bmp = m_bitmaps[State_Normal][status];
return bmp;
wxSize wxCheckBox::GetBitmapSize() const
{
wxBitmap bmp = GetBitmap(State_Normal, Status_Checked);
- return bmp.Ok() ? wxSize(bmp.GetWidth(), bmp.GetHeight())
+ return bmp.IsOk() ? wxSize(bmp.GetWidth(), bmp.GetHeight())
: GetRenderer()->GetCheckBitmapSize();
}
if ( height < sizeBmp.y )
height = sizeBmp.y;
-#if wxUNIV_COMPATIBLE_MSW
+#if defined(wxUNIV_COMPATIBLE_MSW) && wxUNIV_COMPATIBLE_MSW
+ // FIXME: flag nowhere defined so perhaps should be removed?
+
// this looks better but is different from what wxMSW does
height += GetCharHeight()/2;
#endif // wxUNIV_COMPATIBLE_MSW
{
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 )
void wxCheckBox::SendEvent()
{
- wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, GetId());
+ wxCommandEvent event(wxEVT_CHECKBOX, GetId());
InitCommandEvent(event);
wxCheckBoxState state = Get3StateValue();
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))
{
}