Files
wxWidgets/src/osx/anybutton_osx.cpp
Vadim Zeitlin 4e5d2d97e2 Allow using wxBitmapBundle for wxButton bitmaps
Take wxBitmapBundle in wxButton::SetBitmapLabel() and related functions
in order to be able to associate several bitmaps to be used in different
resolutions with the button, instead of just a single bitmap.
2021-10-18 11:50:10 +02:00

95 lines
2.3 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/osx/anybutton_osx.cpp
// Purpose: wxAnyButton
// Author: Stefan Csomor
// Created: 1998-01-01 (extracted from button_osx.cpp)
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
#include "wx/anybutton.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"
wxBEGIN_EVENT_TABLE(wxAnyButton, wxControl)
EVT_ENTER_WINDOW(wxAnyButton::OnEnterWindow)
EVT_LEAVE_WINDOW(wxAnyButton::OnLeaveWindow)
wxEND_EVENT_TABLE()
void wxAnyButton::SetLabel(const wxString& label)
{
if ( HasFlag(wxBU_NOTEXT) )
{
// just store the label internally but don't really use it for the
// button
m_labelOrig =
m_label = label;
return;
}
wxAnyButtonBase::SetLabel(label);
}
wxBitmap wxAnyButton::DoGetBitmap(State which) const
{
return m_bitmaps[which].GetBitmap(wxDefaultSize);
}
void wxAnyButton::DoSetBitmap(const wxBitmapBundle& bitmapBundle, State which)
{
m_bitmaps[which] = bitmapBundle;
if ( which == State_Normal )
GetPeer()->SetBitmap(bitmapBundle);
else if ( which == State_Pressed )
{
wxButtonImpl* bi = dynamic_cast<wxButtonImpl*> (GetPeer());
if ( bi )
bi->SetPressedBitmap(bitmapBundle);
}
InvalidateBestSize();
}
void wxAnyButton::DoSetBitmapPosition(wxDirection dir)
{
GetPeer()->SetBitmapPosition(dir);
InvalidateBestSize();
}
#if wxUSE_MARKUP && wxOSX_USE_COCOA
bool wxAnyButton::DoSetLabelMarkup(const wxString& markup)
{
if ( !wxAnyButtonBase::DoSetLabelMarkup(markup) )
return false;
GetPeer()->SetLabelMarkup(markup);
return true;
}
#endif // wxUSE_MARKUP && wxOSX_USE_COCOA
void wxAnyButton::OnEnterWindow( wxMouseEvent& WXUNUSED(event))
{
if ( DoGetBitmap( State_Current ).IsOk() )
GetPeer()->SetBitmap( m_bitmaps[State_Current] );
}
void wxAnyButton::OnLeaveWindow( wxMouseEvent& WXUNUSED(event))
{
if ( DoGetBitmap( State_Current ).IsOk() )
GetPeer()->SetBitmap( m_bitmaps[State_Normal] );
}