Remove the private and undocumented control and it's usage in wxGenericCollapsiblePane. The class used a low resolution bitmap which looks bad on high resolution displays. The generic implementation using wxRendererNative::DrawCollapseButton() is better fit even on OS X.
141 lines
3.4 KiB
C++
141 lines
3.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/osx/button_osx.cpp
|
|
// Purpose: wxButton
|
|
// Author: Stefan Csomor
|
|
// Modified by:
|
|
// Created: 1998-01-01
|
|
// Copyright: (c) Stefan Csomor
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#include "wx/button.h"
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/panel.h"
|
|
#include "wx/toplevel.h"
|
|
#include "wx/dcclient.h"
|
|
#include "wx/stattext.h"
|
|
#endif
|
|
|
|
#include "wx/stockitem.h"
|
|
|
|
#include "wx/osx/private.h"
|
|
|
|
namespace
|
|
{
|
|
|
|
// Returns true only if the id is wxID_HELP and the label is "Help" or empty.
|
|
bool IsHelpButtonWithStandardLabel(wxWindowID id, const wxString& label)
|
|
{
|
|
if ( id != wxID_HELP )
|
|
return false;
|
|
|
|
if ( label.empty() )
|
|
return true;
|
|
|
|
const wxString labelText = wxStaticText::GetLabelText(label);
|
|
return labelText == "Help" || labelText == _("Help");
|
|
}
|
|
|
|
} // anonymous namespace
|
|
|
|
bool wxButton::Create(wxWindow *parent,
|
|
wxWindowID id,
|
|
const wxString& labelOrig,
|
|
const wxPoint& pos,
|
|
const wxSize& size,
|
|
long style,
|
|
const wxValidator& validator,
|
|
const wxString& name)
|
|
{
|
|
// 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 && !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 "?"
|
|
// label under Mac which looks better.
|
|
if ( !IsHelpButtonWithStandardLabel(id, labelOrig) )
|
|
{
|
|
label = labelOrig.empty() && wxIsStockID(id) ? wxGetStockLabel(id)
|
|
: labelOrig;
|
|
}
|
|
|
|
|
|
if ( !wxButtonBase::Create(parent, id, pos, size, style, validator, name) )
|
|
return false;
|
|
|
|
m_labelOrig =
|
|
m_label = label ;
|
|
|
|
SetPeer(wxWidgetImpl::CreateButton( this, parent, id, label, pos, size, style, GetExtraStyle() ));
|
|
|
|
MacPostControlCreate( pos, size );
|
|
|
|
return true;
|
|
}
|
|
|
|
void wxButton::SetLabel(const wxString& label)
|
|
{
|
|
if ( IsHelpButtonWithStandardLabel(GetId(), label) )
|
|
{
|
|
// ignore the standard label for the help buttons, it's not used
|
|
return;
|
|
}
|
|
|
|
wxAnyButton::SetLabel(label);
|
|
#if wxOSX_USE_COCOA
|
|
OSXUpdateAfterLabelChange(label);
|
|
#endif
|
|
}
|
|
|
|
wxWindow *wxButton::SetDefault()
|
|
{
|
|
wxWindow *btnOldDefault = wxButtonBase::SetDefault();
|
|
|
|
if ( btnOldDefault )
|
|
{
|
|
btnOldDefault->GetPeer()->SetDefaultButton( false );
|
|
}
|
|
|
|
GetPeer()->SetDefaultButton( true );
|
|
|
|
return btnOldDefault;
|
|
}
|
|
|
|
void wxButton::Command (wxCommandEvent & WXUNUSED(event))
|
|
{
|
|
GetPeer()->PerformClick() ;
|
|
// ProcessCommand(event);
|
|
}
|
|
|
|
bool wxButton::OSXHandleClicked( double WXUNUSED(timestampsec) )
|
|
{
|
|
wxCommandEvent event(wxEVT_BUTTON, m_windowId);
|
|
event.SetEventObject(this);
|
|
ProcessCommand(event);
|
|
return true;
|
|
}
|
|
|
|
/* static */
|
|
wxSize wxButtonBase::GetDefaultSize()
|
|
{
|
|
return wxAnyButton::GetDefaultSize();
|
|
}
|