moving bitmapbutton functionality up to button for OSX

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2009-10-09 12:24:35 +00:00
parent e77af0118e
commit b38dc31ffa
9 changed files with 108 additions and 124 deletions

View File

@@ -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<wxButtonImpl*> (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);