X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5b208a1796ecf1b9ab267d200705b4f3b4d10e3..3678169caab0f713415414dce013a638305f3cce:/src/osx/tglbtn_osx.cpp?ds=sidebyside

diff --git a/src/osx/tglbtn_osx.cpp b/src/osx/tglbtn_osx.cpp
index 9c5e02bfcf..abb3c193d6 100644
--- a/src/osx/tglbtn_osx.cpp
+++ b/src/osx/tglbtn_osx.cpp
@@ -31,7 +31,7 @@
 // ----------------------------------------------------------------------------
 
 IMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxControl)
-wxDEFINE_EVENT( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEvent );
+wxDEFINE_EVENT( wxEVT_TOGGLEBUTTON, wxCommandEvent );
 
 // ============================================================================
 // implementation
@@ -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)
@@ -91,7 +94,7 @@ void wxToggleButton::Command(wxCommandEvent & event)
 
 bool wxToggleButton::OSXHandleClicked( double WXUNUSED(timestampsec) )
 {
-    wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId);
+    wxCommandEvent event(wxEVT_TOGGLEBUTTON, m_windowId);
     event.SetInt(GetValue());
     event.SetEventObject(this);
     ProcessCommand(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