24x24 bitmaps and separator for flat style added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32110 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
8f248607e5
commit
abbcdf3ff7
@ -35,17 +35,19 @@ END_EVENT_TABLE()
|
|||||||
#include "wx/geometry.h"
|
#include "wx/geometry.h"
|
||||||
|
|
||||||
#ifdef __WXMAC_OSX__
|
#ifdef __WXMAC_OSX__
|
||||||
const short kwxMacToolBarToolDefaultWidth = 32 ;
|
const short kwxMacToolBarToolDefaultWidth = 24 ;
|
||||||
const short kwxMacToolBarToolDefaultHeight = 32 ;
|
const short kwxMacToolBarToolDefaultHeight = 24 ;
|
||||||
const short kwxMacToolBarTopMargin = 4 ;
|
const short kwxMacToolBarTopMargin = 4 ;
|
||||||
const short kwxMacToolBarLeftMargin = 4 ;
|
const short kwxMacToolBarLeftMargin = 4 ;
|
||||||
const short kwxMacToolBorder = 0 ;
|
const short kwxMacToolBorder = 0 ;
|
||||||
|
const short kwxMacToolSpacing = 6 ;
|
||||||
#else
|
#else
|
||||||
const short kwxMacToolBarToolDefaultWidth = 24 ;
|
const short kwxMacToolBarToolDefaultWidth = 24 ;
|
||||||
const short kwxMacToolBarToolDefaultHeight = 22 ;
|
const short kwxMacToolBarToolDefaultHeight = 22 ;
|
||||||
const short kwxMacToolBarTopMargin = 2 ;
|
const short kwxMacToolBarTopMargin = 2 ;
|
||||||
const short kwxMacToolBarLeftMargin = 2 ;
|
const short kwxMacToolBarLeftMargin = 2 ;
|
||||||
const short kwxMacToolBorder = 4 ;
|
const short kwxMacToolBorder = 4 ;
|
||||||
|
const short kwxMacToolSpacing = 0 ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -95,6 +97,7 @@ public:
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// separator size
|
||||||
wxSize sz = GetToolBar()->GetToolSize() ;
|
wxSize sz = GetToolBar()->GetToolSize() ;
|
||||||
sz.x /= 4 ;
|
sz.x /= 4 ;
|
||||||
sz.y /= 4 ;
|
sz.y /= 4 ;
|
||||||
@ -220,9 +223,9 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
|
|||||||
#ifdef __WXMAC_OSX__
|
#ifdef __WXMAC_OSX__
|
||||||
wxSize toolSize = m_tbar->GetToolSize() ;
|
wxSize toolSize = m_tbar->GetToolSize() ;
|
||||||
int iconsize = 16 ;
|
int iconsize = 16 ;
|
||||||
if ( toolSize.x >= 32 && toolSize.y >= 32)
|
if ( toolSize.x >= 24 && toolSize.y >= 24)
|
||||||
{
|
{
|
||||||
iconsize = 32 ;
|
iconsize = 24 ;
|
||||||
}
|
}
|
||||||
mac_x += ( toolSize.x - iconsize ) / 2 ;
|
mac_x += ( toolSize.x - iconsize ) / 2 ;
|
||||||
mac_y += ( toolSize.y - iconsize ) / 2 ;
|
mac_y += ( toolSize.y - iconsize ) / 2 ;
|
||||||
@ -247,6 +250,26 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
|
|||||||
{
|
{
|
||||||
GetControl()->Move( position ) ;
|
GetControl()->Move( position ) ;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// separator
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
|
int x , y ;
|
||||||
|
x = y = 0 ;
|
||||||
|
int mac_x = position.x ;
|
||||||
|
int mac_y = position.y ;
|
||||||
|
|
||||||
|
Rect contrlRect ;
|
||||||
|
GetControlBounds( m_controlHandle , &contrlRect ) ;
|
||||||
|
int former_mac_x = contrlRect.left ;
|
||||||
|
int former_mac_y = contrlRect.top ;
|
||||||
|
|
||||||
|
if ( mac_x != former_mac_x || mac_y != former_mac_y )
|
||||||
|
{
|
||||||
|
UMAMoveControl( m_controlHandle , mac_x , mac_y ) ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wxToolBarTool::wxToolBarTool(wxToolBar *tbar,
|
wxToolBarTool::wxToolBarTool(wxToolBar *tbar,
|
||||||
@ -263,54 +286,76 @@ wxToolBarTool::wxToolBarTool(wxToolBar *tbar,
|
|||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
|
|
||||||
if (id == wxID_SEPARATOR) return;
|
|
||||||
|
|
||||||
WindowRef window = (WindowRef) tbar->MacGetTopLevelWindowRef() ;
|
WindowRef window = (WindowRef) tbar->MacGetTopLevelWindowRef() ;
|
||||||
wxSize toolSize = tbar->GetToolSize() ;
|
wxSize toolSize = tbar->GetToolSize() ;
|
||||||
Rect toolrect = { 0, 0 , toolSize.y , toolSize.x } ;
|
Rect toolrect = { 0, 0 , toolSize.y , toolSize.x } ;
|
||||||
|
|
||||||
ControlButtonContentInfo info ;
|
if ( id == wxID_SEPARATOR )
|
||||||
wxMacCreateBitmapButton( &info , GetNormalBitmap() ) ;
|
|
||||||
|
|
||||||
SInt16 behaviour = kControlBehaviorOffsetContents ;
|
|
||||||
if ( CanBeToggled() )
|
|
||||||
behaviour += kControlBehaviorToggles ;
|
|
||||||
|
|
||||||
#ifdef __WXMAC_OSX__
|
|
||||||
int iconsize = 16 ;
|
|
||||||
if ( toolSize.x >= 32 && toolSize.y >= 32)
|
|
||||||
{
|
{
|
||||||
iconsize = 32 ;
|
toolSize.x /= 4 ;
|
||||||
}
|
toolSize.y /= 4 ;
|
||||||
toolrect.left += ( toolSize.x - iconsize ) / 2 ;
|
if ( GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL )
|
||||||
toolrect.right = toolrect.left + iconsize ;
|
{
|
||||||
toolrect.top += ( toolSize.y - iconsize ) / 2 ;
|
toolrect.bottom = toolSize.y ;
|
||||||
toolrect.bottom = toolrect.top + iconsize ;
|
}
|
||||||
CreateIconControl( window , &toolrect , &info , false , &m_controlHandle ) ;
|
else
|
||||||
#else
|
{
|
||||||
CreateBevelButtonControl( window , &toolrect , CFSTR("") , kControlBevelButtonNormalBevel , behaviour , &info ,
|
toolrect.right = toolSize.x ;
|
||||||
0 , 0 , 0 , &m_controlHandle ) ;
|
}
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
|
// in flat style we need a visual separator
|
||||||
|
CreateSeparatorControl( window , &toolrect , &m_controlHandle ) ;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
wxMacReleaseBitmapButton( &info ) ;
|
|
||||||
/*
|
|
||||||
SetBevelButtonTextPlacement( m_controlHandle , kControlBevelButtonPlaceBelowGraphic ) ;
|
|
||||||
UMASetControlTitle( m_controlHandle , label , wxFont::GetDefaultEncoding() ) ;
|
|
||||||
*/
|
|
||||||
|
|
||||||
InstallControlEventHandler( (ControlRef) m_controlHandle, GetwxMacToolBarToolEventHandlerUPP(),
|
|
||||||
GetEventTypeCount(eventList), eventList, this,NULL);
|
|
||||||
|
|
||||||
UMAShowControl( m_controlHandle ) ;
|
|
||||||
|
|
||||||
if ( CanBeToggled() && IsToggled() )
|
|
||||||
::SetControl32BitValue( m_controlHandle , 1 ) ;
|
|
||||||
else
|
else
|
||||||
::SetControl32BitValue( m_controlHandle , 0 ) ;
|
{
|
||||||
|
ControlButtonContentInfo info ;
|
||||||
|
wxMacCreateBitmapButton( &info , GetNormalBitmap() ) ;
|
||||||
|
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
|
int iconsize = 16 ;
|
||||||
|
if ( toolSize.x >= 24 && toolSize.y >= 24)
|
||||||
|
{
|
||||||
|
iconsize = 24 ;
|
||||||
|
}
|
||||||
|
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
|
||||||
|
SInt16 behaviour = kControlBehaviorOffsetContents ;
|
||||||
|
if ( CanBeToggled() )
|
||||||
|
behaviour += kControlBehaviorToggles ;
|
||||||
|
CreateBevelButtonControl( window , &toolrect , CFSTR("") , kControlBevelButtonNormalBevel , behaviour , &info ,
|
||||||
|
0 , 0 , 0 , &m_controlHandle ) ;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wxMacReleaseBitmapButton( &info ) ;
|
||||||
|
/*
|
||||||
|
SetBevelButtonTextPlacement( m_controlHandle , kControlBevelButtonPlaceBelowGraphic ) ;
|
||||||
|
UMASetControlTitle( m_controlHandle , label , wxFont::GetDefaultEncoding() ) ;
|
||||||
|
*/
|
||||||
|
|
||||||
|
InstallControlEventHandler( (ControlRef) m_controlHandle, GetwxMacToolBarToolEventHandlerUPP(),
|
||||||
|
GetEventTypeCount(eventList), eventList, this,NULL);
|
||||||
|
|
||||||
|
if ( CanBeToggled() && IsToggled() )
|
||||||
|
{
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
|
// overlay with rounded white rect and set selected to 1
|
||||||
|
#else
|
||||||
|
::SetControl32BitValue( m_controlHandle , 1 ) ;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
ControlRef container = (ControlRef) tbar->GetHandle() ;
|
ControlRef container = (ControlRef) tbar->GetHandle() ;
|
||||||
wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ;
|
wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ;
|
||||||
::EmbedControl( m_controlHandle , container ) ;
|
if ( m_controlHandle )
|
||||||
|
{
|
||||||
|
UMAShowControl( m_controlHandle ) ;
|
||||||
|
::EmbedControl( m_controlHandle , container ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -425,10 +470,12 @@ bool wxToolBar::Realize()
|
|||||||
if ( GetWindowStyleFlag() & wxTB_VERTICAL )
|
if ( GetWindowStyleFlag() & wxTB_VERTICAL )
|
||||||
{
|
{
|
||||||
y += cursize.y ;
|
y += cursize.y ;
|
||||||
|
y += kwxMacToolSpacing ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x += cursize.x ;
|
x += cursize.x ;
|
||||||
|
x += kwxMacToolSpacing ;
|
||||||
}
|
}
|
||||||
|
|
||||||
node = node->GetNext();
|
node = node->GetNext();
|
||||||
|
Loading…
Reference in New Issue
Block a user