1 /////////////////////////////////////////////////////////////////////////////
8 // Copyright: (c) AUTHOR
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
13 #pragma implementation "button.h"
18 #include "wx/button.h"
21 #if !USE_SHARED_LIBRARY
22 IMPLEMENT_DYNAMIC_CLASS(wxButton
, wxControl
)
25 #include "wx/mac/uma.h"
29 bool wxButton::Create(wxWindow
*parent
, wxWindowID id
, const wxString
& label
,
31 const wxSize
& size
, long style
,
32 const wxValidator
& validator
,
38 MacPreControlCreate( parent
, id
, label
, pos
, size
,style
, validator
, name
, &bounds
, title
) ;
40 m_macControl
= ::NewControl( parent
->GetMacRootWindow() , &bounds
, title
, false , 0 , 0 , 1,
41 kControlPushButtonProc
, (long) this ) ;
42 wxASSERT_MSG( m_macControl
!= NULL
, "No valid mac control" ) ;
44 MacPostControlCreate() ;
49 void wxButton::SetDefault()
51 wxWindow
*parent
= GetParent();
52 wxButton
*btnOldDefault
= NULL
;
53 wxPanel
*panel
= wxDynamicCast(parent
, wxPanel
);
56 btnOldDefault
= wxDynamicCast(panel
->GetDefaultItem(),
58 panel
->SetDefaultItem(this);
62 if ( btnOldDefault
&& btnOldDefault
->m_macControl
)
65 ::SetControlData( btnOldDefault
->m_macControl
, kControlButtonPart
,
66 kControlPushButtonDefaultTag
, sizeof( Boolean
) , (char*)(&inData
) ) ;
71 ::SetControlData( m_macControl
, kControlButtonPart
,
72 kControlPushButtonDefaultTag
, sizeof( Boolean
) , (char*)(&inData
) ) ;
76 wxSize
wxButton::DoGetBestSize() const
78 wxSize sz
= GetDefaultSize() ;
80 int wBtn
= m_label
.Length() * 8 + 12 ;
83 if (wBtn
> sz
.x
) sz
.x
= wBtn
;
84 if (hBtn
> sz
.y
) sz
.y
= hBtn
;
89 wxSize
wxButton::GetDefaultSize()
91 int wBtn
= 70 /* + 2 * m_macHorizontalBorder */ ;
92 int hBtn
= 20 /* + 2 * m_macVerticalBorder */ ;
94 return wxSize(wBtn
, hBtn
);
97 void wxButton::Command (wxCommandEvent
& event
)
101 HiliteControl( m_macControl
, kControlButtonPart
) ;
102 unsigned long finalTicks
;
103 Delay( 8 , &finalTicks
) ;
104 HiliteControl( m_macControl
, 0 ) ;
106 ProcessCommand (event
);
109 void wxButton::MacHandleControlClick( ControlHandle control
, SInt16 controlpart
)
111 if ( controlpart
!= kControlNoPart
)
113 wxCommandEvent
event(wxEVT_COMMAND_BUTTON_CLICKED
, m_windowId
);
114 event
.SetEventObject(this);
115 ProcessCommand(event
);