added non-bordered toolbar tools

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2005-02-16 20:13:48 +00:00
parent 1d49979f74
commit ee799df7ff

View File

@@ -33,6 +33,21 @@ END_EVENT_TABLE()
#include "wx/mac/uma.h" #include "wx/mac/uma.h"
#include "wx/geometry.h" #include "wx/geometry.h"
#ifdef __WXMAC_OSX__
const short kwxMacToolBarToolDefaultWidth = 32 ;
const short kwxMacToolBarToolDefaultHeight = 32 ;
const short kwxMacToolBarTopMargin = 4 ;
const short kwxMacToolBarLeftMargin = 4 ;
const short kwxMacToolBorder = 0 ;
#else
const short kwxMacToolBarToolDefaultWidth = 24 ;
const short kwxMacToolBarToolDefaultHeight = 22 ;
const short kwxMacToolBarTopMargin = 2 ;
const short kwxMacToolBarLeftMargin = 2 ;
const short kwxMacToolBorder = 4 ;
#endif
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// private classes // private classes
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -202,7 +217,16 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
x = y = 0 ; x = y = 0 ;
int mac_x = position.x ; int mac_x = position.x ;
int mac_y = position.y ; int mac_y = position.y ;
#if !TARGET_API_MAC_OSX #ifdef __WXMAC_OSX__
wxSize toolSize = m_tbar->GetToolSize() ;
int iconsize = 16 ;
if ( toolSize.x >= 32 && toolSize.y >= 32)
{
iconsize = 32 ;
}
mac_x += ( toolSize.x - iconsize ) / 2 ;
mac_y += ( toolSize.y - iconsize ) / 2 ;
#else
WindowRef rootwindow = (WindowRef) GetToolBar()->MacGetTopLevelWindowRef() ; WindowRef rootwindow = (WindowRef) GetToolBar()->MacGetTopLevelWindowRef() ;
GetToolBar()->MacWindowToRootWindow( &x , &y ) ; GetToolBar()->MacWindowToRootWindow( &x , &y ) ;
mac_x += x; mac_x += x;
@@ -225,11 +249,6 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
} }
} }
const short kwxMacToolBarToolDefaultWidth = 24 ;
const short kwxMacToolBarToolDefaultHeight = 22 ;
const short kwxMacToolBarTopMargin = 2 ;
const short kwxMacToolBarLeftMargin = 2 ;
wxToolBarTool::wxToolBarTool(wxToolBar *tbar, wxToolBarTool::wxToolBarTool(wxToolBar *tbar,
int id, int id,
const wxString& label, const wxString& label,
@@ -257,10 +276,27 @@ wxToolBarTool::wxToolBarTool(wxToolBar *tbar,
if ( CanBeToggled() ) if ( CanBeToggled() )
behaviour += kControlBehaviorToggles ; behaviour += kControlBehaviorToggles ;
#ifdef __WXMAC_OSX__
int iconsize = 16 ;
if ( toolSize.x >= 32 && toolSize.y >= 32)
{
iconsize = 32 ;
}
toolrect.left += ( toolSize.x - iconsize ) / 2 ;
toolrect.right = toolrect.left + iconsize ;
toolrect.top += ( toolSize.y - iconsize ) / 2 ;
toolrect.bottom = toolrect.top + iconsize ;
CreateIconControl( window , &toolrect , &info , false , &m_controlHandle ) ;
#else
CreateBevelButtonControl( window , &toolrect , CFSTR("") , kControlBevelButtonNormalBevel , behaviour , &info , CreateBevelButtonControl( window , &toolrect , CFSTR("") , kControlBevelButtonNormalBevel , behaviour , &info ,
0 , 0 , 0 , &m_controlHandle ) ; 0 , 0 , 0 , &m_controlHandle ) ;
#endif
wxMacReleaseBitmapButton( &info ) ; wxMacReleaseBitmapButton( &info ) ;
/*
SetBevelButtonTextPlacement( m_controlHandle , kControlBevelButtonPlaceBelowGraphic ) ;
UMASetControlTitle( m_controlHandle , label , wxFont::GetDefaultEncoding() ) ;
*/
InstallControlEventHandler( (ControlRef) m_controlHandle, GetwxMacToolBarToolEventHandlerUPP(), InstallControlEventHandler( (ControlRef) m_controlHandle, GetwxMacToolBarToolEventHandlerUPP(),
GetEventTypeCount(eventList), eventList, this,NULL); GetEventTypeCount(eventList), eventList, this,NULL);
@@ -307,6 +343,7 @@ void wxToolBar::Init()
bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
long style, const wxString& name) long style, const wxString& name)
{ {
if ( !wxToolBarBase::Create( parent , id , pos , size , style ) ) if ( !wxToolBarBase::Create( parent , id , pos , size , style ) )
return FALSE ; return FALSE ;
@@ -430,13 +467,13 @@ bool wxToolBar::Realize()
void wxToolBar::SetToolBitmapSize(const wxSize& size) void wxToolBar::SetToolBitmapSize(const wxSize& size)
{ {
m_defaultWidth = size.x+4; m_defaultHeight = size.y+4; m_defaultWidth = size.x+kwxMacToolBorder; m_defaultHeight = size.y+kwxMacToolBorder;
} }
// The button size is bigger than the bitmap size // The button size is bigger than the bitmap size
wxSize wxToolBar::GetToolSize() const wxSize wxToolBar::GetToolSize() const
{ {
return wxSize(m_defaultWidth + 4, m_defaultHeight + 4); return wxSize(m_defaultWidth + kwxMacToolBorder, m_defaultHeight + kwxMacToolBorder);
} }
void wxToolBar::SetRows(int nRows) void wxToolBar::SetRows(int nRows)
@@ -494,7 +531,13 @@ void wxToolBar::DoToggleTool(wxToolBarToolBase *t, bool toggle)
wxToolBarTool *tool = (wxToolBarTool *)t; wxToolBarTool *tool = (wxToolBarTool *)t;
if ( tool->IsButton() ) if ( tool->IsButton() )
{ {
#ifdef __WXMAC_OSX__
IconTransformType transform = toggle ? kTransformSelected : kTransformNone ;
SetControlData( (ControlRef) tool->GetControlHandle(), 0, kControlIconTransformTag, sizeof( transform ),
(Ptr)&transform );
#else
::SetControl32BitValue( (ControlRef) tool->GetControlHandle() , toggle ) ; ::SetControl32BitValue( (ControlRef) tool->GetControlHandle() , toggle ) ;
#endif
} }
} }
@@ -558,6 +601,7 @@ void wxToolBar::OnPaint(wxPaintEvent& event)
{ {
wxPaintDC dc(this) ; wxPaintDC dc(this) ;
#if wxMAC_USE_CORE_GRAPHICS #if wxMAC_USE_CORE_GRAPHICS
// leave the background as it is (striped or metal)
#else #else
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
int w, h ; int w, h ;