X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/92e6d8693a6fbd637d73817a5316053d9299ac67..0c1cc9483ecba053bc9a0983a4a8d48898e334f2:/src/mac/carbon/tglbtn.cpp diff --git a/src/mac/carbon/tglbtn.cpp b/src/mac/carbon/tglbtn.cpp index 0e7af69d62..43904685f7 100644 --- a/src/mac/carbon/tglbtn.cpp +++ b/src/mac/carbon/tglbtn.cpp @@ -18,21 +18,14 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/defs.h" -#include "wx/tglbtn.h" +#include "wx/wxprec.h" #if wxUSE_TOGGLEBTN +#include "wx/tglbtn.h" #include "wx/mac/uma.h" // Button -static const int kMacOSXHorizontalBorder = 2 ; -static const int kMacOSXVerticalBorder = 4 ; - // ---------------------------------------------------------------------------- // macros // ---------------------------------------------------------------------------- @@ -43,12 +36,10 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED) // ============================================================================ // implementation // ============================================================================ - // ---------------------------------------------------------------------------- // wxToggleButton // ---------------------------------------------------------------------------- -// Single check box item bool wxToggleButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxPoint& pos, @@ -61,11 +52,11 @@ bool wxToggleButton::Create(wxWindow *parent, wxWindowID id, if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; - m_label = label ; + m_labelOrig = m_label = label ; Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ; - m_peer = new wxMacControl() ; + m_peer = new wxMacControl(this) ; verify_noerr ( CreateBevelButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , CFSTR("") , kControlBevelButtonNormalBevel , kControlBehaviorToggles , NULL , 0 , 0 , 0 , m_peer->GetControlRefAddr() ) ); @@ -112,5 +103,72 @@ wxInt32 wxToggleButton::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEV return noErr ; } +// ---------------------------------------------------------------------------- +// wxBitmapToggleButton +// ---------------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxBitmapToggleButton, wxControl) + +bool wxBitmapToggleButton::Create(wxWindow *parent, wxWindowID id, + const wxBitmap& label, + const wxPoint& pos, + const wxSize& size, long style, + const wxValidator& validator, + const wxString& name) +{ + m_macIsUserPane = FALSE ; + + m_bitmap = label; + + if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) + return false; + + Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ; + + m_peer = new wxMacControl(this) ; + + ControlButtonContentInfo info; + wxMacCreateBitmapButton( &info, m_bitmap ); + verify_noerr ( CreateBevelButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , CFSTR("") , + kControlBevelButtonNormalBevel , kControlBehaviorOffsetContents | kControlBehaviorToggles , &info , 0 , 0 , 0 , m_peer->GetControlRefAddr() ) ); + + MacPostControlCreate(pos,size) ; + + return TRUE; +} + +wxSize wxBitmapToggleButton::DoGetBestSize() const +{ + if (!m_bitmap.IsOk()) + return wxSize(20,20); + + return wxSize ( m_bitmap.GetWidth()+6, m_bitmap.GetHeight()+6 ) ; +} + +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); +} + +wxInt32 wxBitmapToggleButton::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) ) +{ + wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId); + event.SetInt(GetValue()); + event.SetEventObject(this); + ProcessCommand(event); + return noErr ; +} + #endif // wxUSE_TOGGLEBTN