X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/526954c5968baa29218c994ec48e476ae2bd4b9f..cceffa9e86569facf9dd06d98e88960432139d13:/src/osx/tglbtn_osx.cpp diff --git a/src/osx/tglbtn_osx.cpp b/src/osx/tglbtn_osx.cpp index 9e02808de6..5eb31a43bc 100644 --- a/src/osx/tglbtn_osx.cpp +++ b/src/osx/tglbtn_osx.cpp @@ -5,7 +5,7 @@ // Author: Stefan Csomor // Modified by: // Created: 08.02.01 -// RCS-ID: $Id: tglbtn.cpp 54129 2008-06-11 19:30:52Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -47,40 +47,43 @@ bool wxToggleButton::Create(wxWindow *parent, wxWindowID id, const wxValidator& validator, const wxString& name) { - m_macIsUserPane = FALSE ; + DontCreatePeer(); + + m_marginX = + m_marginY = 0; + + // FIXME: this hack is needed because we're called from + // wxBitmapToggleButton::Create() with this style and we currently use a + // different wxWidgetImpl method (CreateBitmapToggleButton() rather than + // CreateToggleButton()) for creating bitmap buttons, but we really ought + // to unify the creation of buttons of all kinds and then remove + // this check + if ( style & wxBU_NOTEXT ) + { + return wxControl::Create(parent, id, pos, size, style, + validator, name); + } if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; m_labelOrig = m_label = label ; - m_peer = wxWidgetImpl::CreateToggleButton( this, parent, id, label, pos, size, style, GetExtraStyle() ) ; + SetPeer(wxWidgetImpl::CreateToggleButton( this, parent, id, label, pos, size, style, GetExtraStyle() )) ; MacPostControlCreate(pos,size) ; return TRUE; } -wxSize wxToggleButton::DoGetBestSize() const -{ - int wBtn = 70 ; - int hBtn = 20 ; - - int lBtn = m_label.Length() * 8 + 12 ; - if (lBtn > wBtn) - wBtn = lBtn; - - return wxSize ( wBtn , hBtn ) ; -} - void wxToggleButton::SetValue(bool val) { - m_peer->SetValue( val ) ; + GetPeer()->SetValue( val ) ; } bool wxToggleButton::GetValue() const { - return m_peer->GetValue() ; + return GetPeer()->GetValue() ; } void wxToggleButton::Command(wxCommandEvent & event) @@ -102,7 +105,7 @@ bool wxToggleButton::OSXHandleClicked( double WXUNUSED(timestampsec) ) // wxBitmapToggleButton // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxBitmapToggleButton, wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxBitmapToggleButton, wxToggleButton) bool wxBitmapToggleButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& label, @@ -111,59 +114,22 @@ bool wxBitmapToggleButton::Create(wxWindow *parent, wxWindowID id, const wxValidator& validator, const wxString& name) { - m_macIsUserPane = FALSE ; - - m_bitmap = label; + DontCreatePeer(); + + if ( !wxToggleButton::Create(parent, id, wxEmptyString, pos, size, style | wxBU_NOTEXT | wxBU_EXACTFIT, validator, name) ) + return false; m_marginX = m_marginY = wxDEFAULT_BUTTON_MARGIN; - if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) - return false; + m_bitmaps[State_Normal] = label; - m_peer = wxWidgetImpl::CreateBitmapToggleButton( this, parent, id, label, pos, size, style, GetExtraStyle() ) ; + SetPeer(wxWidgetImpl::CreateBitmapToggleButton( this, parent, id, label, pos, size, style, GetExtraStyle() )); MacPostControlCreate(pos,size) ; return TRUE; } -wxSize wxBitmapToggleButton::DoGetBestSize() const -{ - if (!m_bitmap.IsOk()) - return wxSize(20,20); - - wxSize best; - best.x = m_bitmap.GetWidth() + 2 * m_marginX; - best.y = m_bitmap.GetHeight() + 2 * m_marginY; - - return best; -} - -void wxBitmapToggleButton::SetValue(bool val) -{ - m_peer->SetValue( val ) ; -} - -bool wxBitmapToggleButton::GetValue() const -{ - return m_peer->GetValue() ; -} - -void wxBitmapToggleButton::Command(wxCommandEvent & event) -{ - SetValue((event.GetInt() != 0)); - ProcessCommand(event); -} - -bool wxBitmapToggleButton::OSXHandleClicked( double WXUNUSED(timestampsec) ) -{ - wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId); - event.SetInt(GetValue()); - event.SetEventObject(this); - ProcessCommand(event); - return noErr ; -} - #endif // wxUSE_TOGGLEBTN