From 805db8baa867e05296cc3732e0b13dae595c99a8 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sun, 17 Jun 2018 18:39:01 +0200 Subject: [PATCH] Dark Mode for wxRenderer for HeaderButtons and Sashes see #18146 --- src/osx/carbon/renderer.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/osx/carbon/renderer.cpp b/src/osx/carbon/renderer.cpp index f7cd333d38..0f777377ac 100644 --- a/src/osx/carbon/renderer.cpp +++ b/src/osx/carbon/renderer.cpp @@ -172,6 +172,11 @@ int wxRendererMac::DrawHeaderButton( wxWindow *win, wxHeaderSortIconType sortArrow, wxHeaderButtonParams* params ) { + if ( wxPlatformInfo::Get().CheckOSVersion(10, 14) ) + { + if ( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW).Red() < 128 ) + return wxRendererNative::GetGeneric().DrawHeaderButton(win, dc, rect, flags, sortArrow, params); + } const wxCoord x = rect.x; const wxCoord y = rect.y; const wxCoord w = rect.width; @@ -334,7 +339,7 @@ void wxRendererMac::DrawSplitterSash( wxWindow *win, wxOrientation orient, int WXUNUSED(flags) ) { - bool hasMetal = win->MacGetTopLevelWindow()->GetExtraStyle() & wxFRAME_EX_METAL; + bool hasMetal = win->MacGetTopLevelWindow()->GetExtraStyle() & wxFRAME_EX_METAL && !wxPlatformInfo::Get().CheckOSVersion(10, 14); SInt32 height; height = wxRendererNative::Get().GetSplitterParams(win).widthSash; @@ -360,13 +365,15 @@ void wxRendererMac::DrawSplitterSash( wxWindow *win, wxGCDCImpl *impl = (wxGCDCImpl*) dc.GetImpl(); cgContext = (CGContextRef) impl->GetGraphicsContext()->GetNativeContext(); - HIThemeBackgroundDrawInfo bgdrawInfo; - bgdrawInfo.version = 0; - bgdrawInfo.state = kThemeStateActive; - bgdrawInfo.kind = hasMetal ? kThemeBackgroundMetal : kThemeBackgroundPlacard; - if ( hasMetal ) + { + HIThemeBackgroundDrawInfo bgdrawInfo; + bgdrawInfo.version = 0; + bgdrawInfo.state = kThemeStateActive; + bgdrawInfo.kind = hasMetal ? kThemeBackgroundMetal : kThemeBackgroundPlacard; + HIThemeDrawBackground(&splitterRect, &bgdrawInfo, cgContext, kHIThemeOrientationNormal); + } else { CGContextSetFillColorWithColor(cgContext,win->GetBackgroundColour().GetCGColor()); @@ -375,11 +382,14 @@ void wxRendererMac::DrawSplitterSash( wxWindow *win, if ( win->HasFlag(wxSP_3DSASH) ) { - HIThemeSplitterDrawInfo drawInfo; - drawInfo.version = 0; - drawInfo.state = kThemeStateActive; - drawInfo.adornment = hasMetal ? kHIThemeSplitterAdornmentMetal : kHIThemeSplitterAdornmentNone; - HIThemeDrawPaneSplitter( &splitterRect, &drawInfo, cgContext, kHIThemeOrientationNormal ); + if ( !wxPlatformInfo::Get().CheckOSVersion(10, 14) || wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW).Red() > 128 ) + { + HIThemeSplitterDrawInfo drawInfo; + drawInfo.version = 0; + drawInfo.state = kThemeStateActive; + drawInfo.adornment = hasMetal ? kHIThemeSplitterAdornmentMetal : kHIThemeSplitterAdornmentNone; + HIThemeDrawPaneSplitter( &splitterRect, &drawInfo, cgContext, kHIThemeOrientationNormal ); + } } } }