]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/renderer.cpp
cleanup mac
[wxWidgets.git] / src / mac / carbon / renderer.cpp
index e0f9bc23e2f4734b4eb8e1cac2bf0d7226c5f01e..182ee909127f63e76cf3234c3e7dca198f89b4b5 100644 (file)
@@ -57,6 +57,11 @@ public:
         wxOrientation orient,
         int flags = 0 );
 
+    virtual void DrawCheckBox(wxWindow *win,
+                              wxDC& dc,
+                              const wxRect& rect,
+                              int flags = 0);
+
     virtual void DrawComboBoxDropButton(wxWindow *win,
                                         wxDC& dc,
                                         const wxRect& rect,
@@ -151,8 +156,13 @@ int wxRendererMac::DrawHeaderButton( wxWindow *win,
         CGContextTranslateCTM( cgContext, 0, bounds.bottom - bounds.top );
         CGContextScaleCTM( cgContext, 1, -1 );
 
-        HIShapeReplacePathInCGContext( HIShapeCreateWithQDRgn( (RgnHandle) dc.m_macCurrentClipRgn ), cgContext );
-        CGContextClip( cgContext );
+        HIShapeRef shape = HIShapeCreateWithQDRgn( (RgnHandle) dc.m_macCurrentClipRgn );
+        if ( shape != 0 )
+        {
+            HIShapeReplacePathInCGContext( shape , cgContext );
+            CFRelease( shape );
+            CGContextClip( cgContext );
+        }
         HIViewConvertRect( &headerRect, (HIViewRef) win->GetHandle(), (HIViewRef) win->MacGetTopLevelWindow()->GetHandle() );
 #endif
 
@@ -374,6 +384,12 @@ wxRendererMac::DrawItemSelectionRect(wxWindow *win,
 {
     if ( !(flags & wxCONTROL_SELECTED) )
         return;
+        
+    if (flags & wxCONTROL_FOCUSED)
+    {
+        if (!IsControlActive( (ControlRef)win->GetHandle() ))
+            flags = wxCONTROL_SELECTED;
+    }
 
     RGBColor selColor;
     GetThemeBrushAsColor(flags & wxCONTROL_FOCUSED
@@ -456,6 +472,8 @@ wxRendererMac::DrawMacThemeButton(wxWindow *win,
             drawInfo.kind = kind;
             drawInfo.state = (flags & wxCONTROL_DISABLED) ? kThemeStateInactive : kThemeStateActive;
             drawInfo.value = (flags & wxCONTROL_SELECTED) ? kThemeButtonOn : kThemeButtonOff;
+            if (flags & wxCONTROL_UNDETERMINED)
+                drawInfo.value = kThemeButtonMixed;
             drawInfo.adornment = adornment;
 
             HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );
@@ -468,6 +486,18 @@ wxRendererMac::DrawMacThemeButton(wxWindow *win,
     }
 }
 
+void
+wxRendererMac::DrawCheckBox(wxWindow *win,
+                            wxDC& dc,
+                            const wxRect& rect,
+                            int flags)
+{
+    if (flags & wxCONTROL_CHECKED)
+        flags |= wxCONTROL_SELECTED;
+
+    DrawMacThemeButton(win, dc, rect, flags,
+                       kThemeCheckBox, kThemeAdornmentNone);
+}
 
 void
 wxRendererMac::DrawComboBoxDropButton(wxWindow *win,