+void wxRendererMac::DrawSplitterSash( wxWindow *win,
+ wxDC& dc,
+ const wxSize& size,
+ wxCoord position,
+ wxOrientation orient,
+ int WXUNUSED(flags) )
+{
+ bool hasMetal = win->MacGetTopLevelWindow()->MacGetMetalAppearance();
+ SInt32 height;
+ GetThemeMetric( kThemeMetricSmallPaneSplitterHeight, &height );
+ HIRect splitterRect;
+ if (orient == wxVERTICAL)
+ splitterRect = CGRectMake( position, 0, height, size.y );
+ else
+ splitterRect = CGRectMake( 0, position, size.x, height );
+
+#if !wxMAC_USE_CORE_GRAPHICS
+ HIViewConvertRect(
+ &splitterRect,
+ (HIViewRef) win->GetHandle(),
+ (HIViewRef) win->MacGetTopLevelWindow()->GetHandle() );
+#endif
+
+ // under compositing we should only draw when called by the OS, otherwise just issue a redraw command
+ // strange redraw errors occur if we don't do this
+
+ if ( !dc.IsKindOf( CLASSINFO( wxPaintDC ) ) )
+ {
+ Rect r =
+ {
+ (short) splitterRect.origin.y,
+ (short) splitterRect.origin.x,
+ (short) (splitterRect.origin.y + splitterRect.size.height),
+ (short) (splitterRect.origin.x + splitterRect.size.width)
+ };
+
+ RgnHandle updateRgn = NewRgn();
+ RectRgn( updateRgn, &r );
+ HIViewSetNeedsDisplayInRegion( (HIViewRef) win->GetHandle(), updateRgn, true );
+ DisposeRgn( updateRgn );
+ }
+ else
+ {
+ CGContextRef cgContext;
+
+#if wxMAC_USE_CORE_GRAPHICS
+ cgContext = ((wxMacCGContext*)(dc.GetGraphicContext()))->GetNativeContext();
+#else
+ Rect bounds;
+ GetPortBounds( (CGrafPtr) dc.m_macPort, &bounds );
+ QDBeginCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
+ CGContextTranslateCTM( cgContext, 0, bounds.bottom - bounds.top );
+ CGContextScaleCTM( cgContext, 1, -1 );
+#endif
+
+ HIThemeSplitterDrawInfo drawInfo;
+ drawInfo.version = 0;
+ drawInfo.state = kThemeStateActive;
+ drawInfo.adornment = hasMetal ? kHIThemeSplitterAdornmentMetal : kHIThemeSplitterAdornmentNone;
+ HIThemeDrawPaneSplitter( &splitterRect, &drawInfo, cgContext, kHIThemeOrientationNormal );
+
+#if wxMAC_USE_CORE_GRAPHICS
+#else
+ QDEndCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
+#endif
+ }
+}