X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/688a201a5af8342da53d709bbef1c23d1d8196c0..9d46359178b28cd86e189e877015a8e69ff5bbaa:/src/mac/carbon/renderer.cpp diff --git a/src/mac/carbon/renderer.cpp b/src/mac/carbon/renderer.cpp index e0f9bc23e2..182ee90912 100644 --- a/src/mac/carbon/renderer.cpp +++ b/src/mac/carbon/renderer.cpp @@ -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,