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:
@@ -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 ;
|
||||||
|
Reference in New Issue
Block a user