X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/64f553a4860f74ac47581db3864795b23e7ae002..19311d4e7c43a3f6243bf805c164fd76cada0386:/src/mac/carbon/toolbar.cpp?ds=sidebyside diff --git a/src/mac/carbon/toolbar.cpp b/src/mac/carbon/toolbar.cpp index cdefd9ccbb..718123647d 100644 --- a/src/mac/carbon/toolbar.cpp +++ b/src/mac/carbon/toolbar.cpp @@ -240,20 +240,20 @@ void wxToolBarTool::SetPosition(const wxPoint& position) m_x = position.x; m_y = position.y; - if ( IsButton() ) + int x , y ; + x = y = 0 ; + int mac_x = position.x ; + int mac_y = position.y ; + + if ( ! GetToolBar()->MacGetTopLevelWindow()->MacUsesCompositing() ) { - int x , y ; - x = y = 0 ; - int mac_x = position.x ; - int mac_y = position.y ; -#ifdef __WXMAC_OSX__ - // already correctly set up -#else - WindowRef rootwindow = (WindowRef) GetToolBar()->MacGetTopLevelWindowRef() ; GetToolBar()->MacWindowToRootWindow( &x , &y ) ; mac_x += x; mac_y += y; -#endif + } + + if ( IsButton() ) + { Rect contrlRect ; GetControlBounds( m_controlHandle , &contrlRect ) ; int former_mac_x = contrlRect.left ; @@ -273,11 +273,6 @@ void wxToolBarTool::SetPosition(const wxPoint& position) { // 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 ; @@ -369,7 +364,7 @@ wxToolBarTool::wxToolBarTool(wxToolBar *tbar, else { ControlButtonContentInfo info ; - wxMacCreateBitmapButton( &info , GetNormalBitmap() ) ; + wxMacCreateBitmapButton( &info , GetNormalBitmap() , kControlContentIconRef ) ; #ifdef __WXMAC_OSX__ CreateIconControl( window , &toolrect , &info , false , &m_controlHandle ) ; @@ -695,12 +690,30 @@ bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos), wxToolBarToolBase *tool) void wxToolBar::OnPaint(wxPaintEvent& event) { wxPaintDC dc(this) ; -#if wxMAC_USE_CORE_GRAPHICS - // leave the background as it is (striped or metal) -#else - wxMacPortSetter helper(&dc) ; + int w, h ; GetSize( &w , &h ) ; +#if wxMAC_USE_CORE_GRAPHICS && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3 + if ( !MacGetTopLevelWindow()->MacGetMetalAppearance() ) + { + if ( UMAGetSystemVersion() >= 0x1030 ) + { + HIThemePlacardDrawInfo info ; + memset( &info, 0 , sizeof( info ) ) ; + info.version = 0 ; + info.state = IsEnabled() ? kThemeStateActive : kThemeStateInactive ; + + CGContextRef cgContext = (CGContextRef) MacGetCGContextRef() ; + HIRect rect = CGRectMake( 0 , 0 , w , h ) ; + HIThemeDrawPlacard( &rect , & info , cgContext, kHIThemeOrientationNormal) ; + } + } + else + { + // leave the background as it is (striped or metal) + } +#else + wxMacPortSetter helper(&dc) ; Rect toolbarrect = { dc.YLOG2DEVMAC(0) , dc.XLOG2DEVMAC(0) , dc.YLOG2DEVMAC(h) , dc.XLOG2DEVMAC(w) } ;