]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/toolbar.cpp
Use empty check consistent with other parts.
[wxWidgets.git] / src / mac / carbon / toolbar.cpp
index 1df959231d5d48c0d66dd5c65c54a85b3a2d474c..718123647d8a6c254eb224e1293507e9fa61a475 100644 (file)
@@ -99,8 +99,10 @@ public:
         {
             // separator size
             wxSize sz = GetToolBar()->GetToolSize() ;
-            sz.x /= 4 ;
-            sz.y /= 4 ;
+            if ( GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL )
+                sz.y /= 4 ;
+            else
+                sz.x /= 4 ;
             return sz ;
         }
     }
@@ -147,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; 
@@ -234,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 ;
@@ -267,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 ;
@@ -363,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 ) ;
@@ -689,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) } ;