X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5a904a32e64d98e76ca69a7e8830a2747cfe1aba..2a12cc65c8a0d576654b2c24c60503564ae07712:/src/mac/carbon/toolbar.cpp diff --git a/src/mac/carbon/toolbar.cpp b/src/mac/carbon/toolbar.cpp index 45c2ae0e27..718123647d 100644 --- a/src/mac/carbon/toolbar.cpp +++ b/src/mac/carbon/toolbar.cpp @@ -149,7 +149,11 @@ static pascal OSStatus wxMacToolBarToolControlEventHandler( EventHandlerCallRef wxToolBarTool* tbartool = (wxToolBarTool*)data ; if ( tbartool->CanBeToggled() ) { +#ifdef __WXMAC_OSX__ + ((wxToolBar*)tbartool->GetToolBar())->ToggleTool(tbartool->GetId(), !tbartool->IsToggled() ); +#else ((wxToolBar*)tbartool->GetToolBar())->ToggleTool(tbartool->GetId(), GetControl32BitValue((ControlRef)tbartool->GetControlHandle())); +#endif } ((wxToolBar*)tbartool->GetToolBar())->OnLeftClick( tbartool->GetId() , tbartool -> IsToggled() ) ; result = noErr; @@ -236,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 ; @@ -269,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 ; @@ -365,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 ) ; @@ -691,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) } ;