X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2ac0ac7c1b1c0e4c37f3729e139c4cca76bbe0b7..1827c0f538a8dd657d2e513173fbe3794f56eb1e:/src/osx/button_osx.cpp diff --git a/src/osx/button_osx.cpp b/src/osx/button_osx.cpp index 52208f4ed2..b61d296384 100644 --- a/src/osx/button_osx.cpp +++ b/src/osx/button_osx.cpp @@ -25,6 +25,11 @@ IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) +BEGIN_EVENT_TABLE(wxButton, wxControl) + EVT_ENTER_WINDOW(wxButton::OnEnterWindow) + EVT_LEAVE_WINDOW(wxButton::OnLeaveWindow) +END_EVENT_TABLE() + bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& lbl, @@ -34,6 +39,9 @@ bool wxButton::Create(wxWindow *parent, const wxValidator& validator, const wxString& name) { + m_marginX = + m_marginY = 0; + // FIXME: this hack is needed because we're called from // wxBitmapButton::Create() with this style and we currently use a // different wxWidgetImpl method (CreateBitmapButton() rather than @@ -79,19 +87,23 @@ void wxButton::SetLabel(const wxString& label) wxButtonBase::SetLabel(label); } -// there is no support for button bitmaps in wxOSX/Carbon so there is no need -// for these methods there -#if wxOSX_USE_COCOA - wxBitmap wxButton::DoGetBitmap(State which) const { - return which == State_Normal ? m_peer->GetBitmap() : wxBitmap(); + return m_bitmaps[which]; } void wxButton::DoSetBitmap(const wxBitmap& bitmap, State which) { + m_bitmaps[which] = bitmap; + if ( which == State_Normal ) m_peer->SetBitmap(bitmap); + else if ( which == State_Pressed ) + { + wxButtonImpl* bi = dynamic_cast (m_peer); + if ( bi ) + bi->SetPressedBitmap(bitmap); + } } void wxButton::DoSetBitmapPosition(wxDirection dir) @@ -99,8 +111,6 @@ void wxButton::DoSetBitmapPosition(wxDirection dir) m_peer->SetBitmapPosition(dir); } -#endif // wxOSX_USE_COCOA - wxWindow *wxButton::SetDefault() { wxWindow *btnOldDefault = wxButtonBase::SetDefault(); @@ -121,6 +131,18 @@ void wxButton::Command (wxCommandEvent & WXUNUSED(event)) // ProcessCommand(event); } +void wxButton::OnEnterWindow( wxMouseEvent& WXUNUSED(event)) +{ + if ( DoGetBitmap( State_Current ).IsOk() ) + m_peer->SetBitmap( DoGetBitmap( State_Current ) ); +} + +void wxButton::OnLeaveWindow( wxMouseEvent& WXUNUSED(event)) +{ + if ( DoGetBitmap( State_Current ).IsOk() ) + m_peer->SetBitmap( DoGetBitmap( State_Normal ) ); +} + bool wxButton::OSXHandleClicked( double WXUNUSED(timestampsec) ) { wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, m_windowId);