X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c97c99522358ed5791528a38ec2a727d079d2483..5bcdf503fa91515103271d457c34e75391227373:/src/mac/carbon/renderer.cpp?ds=inline diff --git a/src/mac/carbon/renderer.cpp b/src/mac/carbon/renderer.cpp index 15d9ef20b1..abac02650a 100644 --- a/src/mac/carbon/renderer.cpp +++ b/src/mac/carbon/renderer.cpp @@ -42,7 +42,7 @@ public: wxHeaderButtonParams* params = NULL ); virtual int GetHeaderButtonHeight(wxWindow *win); - + // draw the expanded/collapsed icon for a tree control item virtual void DrawTreeItemButton( wxWindow *win, wxDC& dc, @@ -61,12 +61,12 @@ public: wxDC& dc, const wxRect& rect, int flags = 0); - + virtual void DrawPushButton(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0); - + virtual void DrawItemSelectionRect(wxWindow *win, wxDC& dc, const wxRect& rect, @@ -79,7 +79,7 @@ private: int flags, int kind, int adornment); - + // the tree buttons wxBitmap m_bmpTreeExpanded; wxBitmap m_bmpTreeCollapsed; @@ -168,7 +168,7 @@ int wxRendererMac::DrawHeaderButton( wxWindow *win, // The down arrow is drawn automatically, change it to an up arrow if needed. if ( sortArrow == wxHDR_SORT_ICON_UP ) drawInfo.adornment = kThemeAdornmentHeaderButtonSortUp; - + HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect ); // If we don't want any arrows we need to draw over the one already there @@ -181,7 +181,7 @@ int wxRendererMac::DrawHeaderButton( wxWindow *win, headerRect.size.width += 25; HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect ); CGContextRestoreGState( cgContext ); - } + } } #if wxMAC_USE_CORE_GRAPHICS @@ -233,7 +233,7 @@ void wxRendererMac::DrawTreeItemButton( wxWindow *win, const wxCoord y = rect.y; const wxCoord w = rect.width; const wxCoord h = rect.height; -#endif +#endif dc.SetBrush( *wxTRANSPARENT_BRUSH ); @@ -283,10 +283,10 @@ void wxRendererMac::DrawTreeItemButton( wxWindow *win, // Apple mailing list posts say to use the arrow adornment constants, but those don't work. // We need to set the value using the 'old' DrawThemeButton constants instead. drawInfo.value = (flags & wxCONTROL_EXPANDED) ? kThemeDisclosureDown : kThemeDisclosureRight; - drawInfo.adornment = kThemeAdornmentNone; + drawInfo.adornment = kThemeAdornmentNone; HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect ); - + } #if wxMAC_USE_CORE_GRAPHICS @@ -370,16 +370,16 @@ wxRendererMac::DrawItemSelectionRect(wxWindow *win, const wxRect& rect, int flags ) { - RGBColor selColor; - if (flags & wxCONTROL_SELECTED) - { - if (flags & wxCONTROL_FOCUSED) - GetThemeBrushAsColor(kThemeBrushAlternatePrimaryHighlightColor, 32, true, &selColor); - else - GetThemeBrushAsColor(kThemeBrushSecondaryHighlightColor, 32, true, &selColor); - } - - wxBrush selBrush = wxBrush( wxColour( selColor.red, selColor.green, selColor.blue ), wxSOLID ); + if ( !(flags & wxCONTROL_SELECTED) ) + return; + + RGBColor selColor; + GetThemeBrushAsColor(flags & wxCONTROL_FOCUSED + ? kThemeBrushAlternatePrimaryHighlightColor + : kThemeBrushSecondaryHighlightColor, + 32, true, &selColor); + + wxBrush selBrush(selColor); dc.SetPen( *wxTRANSPARENT_PEN ); dc.SetBrush( selBrush ); @@ -473,17 +473,34 @@ wxRendererMac::DrawComboBoxDropButton(wxWindow *win, const wxRect& rect, int flags) { + int kind; + if (win->GetWindowVariant() == wxWINDOW_VARIANT_SMALL || (win->GetParent() && win->GetParent()->GetWindowVariant() == wxWINDOW_VARIANT_SMALL)) + kind = kThemeArrowButtonSmall; + else if (win->GetWindowVariant() == wxWINDOW_VARIANT_MINI || (win->GetParent() && win->GetParent()->GetWindowVariant() == wxWINDOW_VARIANT_MINI)) + kind = kThemeArrowButtonMini; + else + kind = kThemeArrowButton; + DrawMacThemeButton(win, dc, rect, flags, - kThemeArrowButton, kThemeAdornmentArrowDownArrow); + kind, kThemeAdornmentArrowDownArrow); } - + void wxRendererMac::DrawPushButton(wxWindow *win, wxDC& dc, const wxRect& rect, int flags) { + int kind; + if (win->GetWindowVariant() == wxWINDOW_VARIANT_SMALL || (win->GetParent() && win->GetParent()->GetWindowVariant() == wxWINDOW_VARIANT_SMALL)) + kind = kThemeBevelButtonSmall; + // There is no kThemeBevelButtonMini, but in this case, use Small + else if (win->GetWindowVariant() == wxWINDOW_VARIANT_MINI || (win->GetParent() && win->GetParent()->GetWindowVariant() == wxWINDOW_VARIANT_MINI)) + kind = kThemeBevelButtonSmall; + else + kind = kThemeBevelButton; + DrawMacThemeButton(win, dc, rect, flags, - kThemeBevelButton, kThemeAdornmentNone); + kind, kThemeAdornmentNone); } - +