]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/utils.cpp
DC reorganization
[wxWidgets.git] / src / mac / carbon / utils.cpp
index 5cbb3089a0c07fc7c4b794d8d9918771a0351757..b91247bfd521e441e1f8be6421f19533e313f241 100644 (file)
@@ -643,7 +643,29 @@ void wxMacControl::SuperChangedPosition()
 void wxMacControl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle )
 {
     m_font = font;
-#ifndef __LP64__
+#if wxMAC_USE_CORE_TEXT
+    if ( UMAGetSystemVersion() >= 0x1050 )
+    {
+        HIViewPartCode part = 0;
+        HIThemeTextHorizontalFlush flush = kHIThemeTextHorizontalFlushDefault;
+        if ( ( windowStyle & wxALIGN_MASK ) & wxALIGN_CENTER_HORIZONTAL )
+            flush = kHIThemeTextHorizontalFlushCenter;
+        else if ( ( windowStyle & wxALIGN_MASK ) & wxALIGN_RIGHT )
+            flush = kHIThemeTextHorizontalFlushRight;
+        HIViewSetTextFont( m_controlRef , part , (CTFontRef) font.MacGetCTFont() );
+        HIViewSetTextHorizontalFlush( m_controlRef, part, flush );
+        
+        if ( foreground != *wxBLACK )
+        {
+            ControlFontStyleRec fontStyle;
+            foreground.GetRGBColor( &fontStyle.foreColor );
+            fontStyle.flags = kControlUseForeColorMask;
+            ::SetControlFontStyle( m_controlRef , &fontStyle );
+        }
+        
+    }
+#endif
+#if wxMAC_USE_ATSU_TEXT
     ControlFontStyleRec fontStyle;
     if ( font.MacGetThemeFontID() != kThemeCurrentPortFont )
     {
@@ -699,8 +721,7 @@ void wxMacControl::SetFont( const wxFont & font , const wxColour& foreground , l
 
 void wxMacControl::SetBackgroundColour( const wxColour &WXUNUSED(col) )
 {
-    // TODO
-    // setting up a color proc is not recommended anymore
+//    HITextViewSetBackgroundColor( m_textView , color );
 }
 
 void wxMacControl::SetRange( SInt32 minimum , SInt32 maximum )
@@ -1878,9 +1899,18 @@ void wxMacDataItemBrowserControl::MacScrollTo( unsigned int n )
     GetScrollPosition( &top , &left ) ;
     wxMacDataItem * item = (wxMacDataItem*) GetItemFromLine( n );
 
+    // there is a bug in RevealItem that leads to situations
+    // in large lists, where the item does not get scrolled
+    // into sight, so we do a pre-scroll if necessary
     UInt16 height ;
     GetRowHeight( (DataBrowserItemID) item , &height ) ;
-    SetScrollPosition( n * ((UInt32)height) , left ) ;
+    UInt32 linetop = n * ((UInt32) height );
+    UInt32 linebottom = linetop + height;
+    Rect rect ;
+    GetRect( &rect );
+    
+    if ( linetop < top || linebottom > (top + rect.bottom - rect.top ) )
+        SetScrollPosition( wxMax( n-2, 0 ) * ((UInt32)height) , left ) ;
 
     RevealItem( item , kDataBrowserRevealWithoutSelecting );
 }
@@ -1931,20 +1961,6 @@ CGColorRef wxMacCreateCGColorFromHITheme( ThemeBrush brush )
     return color;
 }
 
-#ifndef __LP64__
-
-wxMacPortSaver::wxMacPortSaver( GrafPtr port )
-{
-    ::GetPort( &m_port );
-    ::SetPort( port );
-}
-
-wxMacPortSaver::~wxMacPortSaver()
-{
-    ::SetPort( m_port );
-}
-#endif
-
 #if wxMAC_USE_QUICKDRAW
 
 void wxMacGlobalToLocal( WindowRef window , Point*pt )