// Author: Stefan Csomor
// Modified by:
// Created: 1998-01-01
-// RCS-ID: $Id: button.cpp 54845 2008-07-30 14:52:41Z SC $
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
} // anonymous namespace
-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& labelOrig,
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
// CreateButton()) 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 )
+ if ( style & wxBU_NOTEXT && !ShouldCreatePeer() )
{
return wxControl::Create(parent, id, pos, size, style,
validator, name);
}
+ DontCreatePeer();
+
+ m_marginX =
+ m_marginY = 0;
+
wxString label;
// Ignore the standard label for help buttons if possible, they use "?"
: labelOrig;
}
- m_macIsUserPane = false ;
if ( !wxButtonBase::Create(parent, id, pos, size, style, validator, name) )
return false;
m_labelOrig =
m_label = label ;
- m_peer = wxWidgetImpl::CreateButton( this, parent, id, label, pos, size, style, GetExtraStyle() );
+ SetPeer(wxWidgetImpl::CreateButton( this, parent, id, label, pos, size, style, GetExtraStyle() ));
MacPostControlCreate( pos, size );
return;
}
- if ( HasFlag(wxBU_NOTEXT) )
- {
- // just store the label internally but don't really use it for the
- // button
- m_labelOrig =
- m_label = label;
- return;
- }
-
- wxButtonBase::SetLabel(label);
-}
-
-wxBitmap wxButton::DoGetBitmap(State which) const
-{
- 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);
- }
- InvalidateBestSize();
-}
-
-void wxButton::DoSetBitmapPosition(wxDirection dir)
-{
- m_peer->SetBitmapPosition(dir);
- InvalidateBestSize();
+ wxAnyButton::SetLabel(label);
+#if wxOSX_USE_COCOA
+ OSXUpdateAfterLabelChange(label);
+#endif
}
wxWindow *wxButton::SetDefault()
btnOldDefault->GetPeer()->SetDefaultButton( false );
}
- m_peer->SetDefaultButton( true );
+ GetPeer()->SetDefaultButton( true );
return btnOldDefault;
}
void wxButton::Command (wxCommandEvent & WXUNUSED(event))
{
- m_peer->PerformClick() ;
+ GetPeer()->PerformClick() ;
// 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);
+ wxCommandEvent event(wxEVT_BUTTON, m_windowId);
event.SetEventObject(this);
ProcessCommand(event);
return true;
}
+/* static */
+wxSize wxButtonBase::GetDefaultSize()
+{
+ return wxAnyButton::GetDefaultSize();
+}
+
//-------------------------------------------------------
// wxDisclosureTriangle
//-------------------------------------------------------
bool wxDisclosureTriangle::Create(wxWindow *parent, wxWindowID id, const wxString& label,
const wxPoint& pos, const wxSize& size, long style,const wxValidator& validator, const wxString& name )
-{
- m_macIsUserPane = false ;
-
+{
+ DontCreatePeer();
if ( !wxControl::Create(parent, id, pos, size, style, validator, name) )
return false;
- m_peer = wxWidgetImpl::CreateDisclosureTriangle(this, parent, id, label, pos, size, style, GetExtraStyle() );
+ SetPeer(wxWidgetImpl::CreateDisclosureTriangle(this, parent, id, label, pos, size, style, GetExtraStyle() ));
MacPostControlCreate( pos, size );
- // passing the text in the param doesn't seem to work, so lets do it again
+ // passing the text in the param doesn't seem to work, so let's do it again
SetLabel( label );
return true;
void wxDisclosureTriangle::SetOpen( bool open )
{
- m_peer->SetValue( open ? 1 : 0 );
+ GetPeer()->SetValue( open ? 1 : 0 );
}
bool wxDisclosureTriangle::IsOpen() const
{
- return m_peer->GetValue() == 1;
+ return GetPeer()->GetValue() == 1;
}
bool wxDisclosureTriangle::OSXHandleClicked( double WXUNUSED(timestampsec) )
{
// Just emit button event for now
- wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, m_windowId);
+ wxCommandEvent event(wxEVT_BUTTON, m_windowId);
event.SetEventObject(this);
ProcessCommand(event);