]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/renderer.cpp
screendc implementation
[wxWidgets.git] / src / mac / carbon / renderer.cpp
index ee4ec9022da75bdb4fec543d67bd55f31a995536..63e7b2233317b1036d00c98d5a3338268f9efeab 100644 (file)
@@ -37,6 +37,7 @@ public:
         wxDC& dc,
         const wxRect& rect,
         int flags = 0,
+        wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
         wxHeaderButtonParams* params = NULL );
 
     virtual int GetHeaderButtonHeight(wxWindow *win);
@@ -129,12 +130,13 @@ void wxRendererMac::DrawHeaderButton( wxWindow *win,
     wxDC& dc,
     const wxRect& rect,
     int flags,
+    wxHeaderSortIconType sortArrow,
     wxHeaderButtonParams* params )
 {
-    const wxCoord x = dc.XLOG2DEV(rect.x /*- 1*/);
-    const wxCoord y = dc.YLOG2DEV(rect.y /*- 1*/);
-    const wxCoord w = dc.XLOG2DEVREL(rect.width);
-    const wxCoord h = dc.YLOG2DEVREL(rect.height);
+    const wxCoord x = dc.LogicalToDeviceX(rect.x /*- 1*/);
+    const wxCoord y = dc.LogicalToDeviceY(rect.y /*- 1*/);
+    const wxCoord w = dc.LogicalToDeviceXRel(rect.width);
+    const wxCoord h = dc.LogicalToDeviceYRel(rect.height);
 
     dc.SetBrush( *wxTRANSPARENT_BRUSH );
 
@@ -158,7 +160,7 @@ void wxRendererMac::DrawHeaderButton( wxWindow *win,
         CGContextRef cgContext;
 
 #if wxMAC_USE_CORE_GRAPHICS
-        cgContext = ((wxMacCGContext*)(dc.GetGraphicContext()))->GetNativeContext();
+        cgContext = (CGContextRef) dc.GetGraphicContext()->GetNativeContext();
 #else
         Rect bounds;
 
@@ -185,13 +187,13 @@ void wxRendererMac::DrawHeaderButton( wxWindow *win,
             drawInfo.adornment = kThemeAdornmentNone;
 
             // The down arrow is drawn automatically, change it to an up arrow if needed.
-            if ( flags & wxCONTROL_UPICON )
+            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
-            if ( (flags & wxCONTROL_SELECTED) && !(flags & (wxCONTROL_UPICON|wxCONTROL_DOWNICON)) )
+            if ( (flags & wxCONTROL_SELECTED) && (sortArrow == wxHDR_SORT_ICON_NONE) )
             {
                 // clip to the header rectangle
                 CGContextSaveGState( cgContext );
@@ -212,13 +214,14 @@ void wxRendererMac::DrawHeaderButton( wxWindow *win,
     // Reserve room for the arrows before writing the label, and turn off the
     // flags we've already handled
     wxRect newRect(rect);
-    if ( (flags & wxCONTROL_SELECTED) && (flags & (wxCONTROL_UPICON|wxCONTROL_DOWNICON)) )
+    if ( (flags & wxCONTROL_SELECTED) && (sortArrow != wxHDR_SORT_ICON_NONE) )
     {
         newRect.width -= 12;
+        sortArrow = wxHDR_SORT_ICON_NONE;
     }
-    flags &= ~(wxCONTROL_SELECTED | wxCONTROL_UPICON | wxCONTROL_DOWNICON);
+    flags &= ~wxCONTROL_SELECTED;
 
-    DrawHeaderButtonContents(win, dc, newRect, flags, params);
+    DrawHeaderButtonContents(win, dc, newRect, flags, sortArrow, params);
 }
 
 
@@ -326,7 +329,7 @@ void wxRendererMac::DrawSplitterSash( wxWindow *win,
         CGContextRef cgContext;
 
 #if wxMAC_USE_CORE_GRAPHICS
-        cgContext = ((wxMacCGContext*)(dc.GetGraphicContext()))->GetNativeContext();
+        cgContext = (CGContextRef) dc.GetGraphicContext()->GetNativeContext();
 #else
         Rect bounds;
         GetPortBounds( (CGrafPtr) dc.m_macPort, &bounds );