]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/statbrma.cpp
applied patch 923858 (fixes crash in zlib streams)
[wxWidgets.git] / src / mac / carbon / statbrma.cpp
index b2dba2135d7b7919da99a4da176a3b9415de534c..8220559531ab79855966c3752e5bf4a5e0a9e73d 100644 (file)
@@ -27,6 +27,7 @@ END_EVENT_TABLE()
 
 #ifdef __WXMAC__
 #include "wx/mac/private.h"
+#include "wx/toplevel.h"
 #endif
 
 // ============================================================================
@@ -50,17 +51,24 @@ bool wxStatusBarMac::Create(wxWindow *parent, wxWindowID id,
                             long style ,
                             const wxString& name)
 {
-    return wxStatusBarGeneric::Create( parent , id , style , name ) ;
+    if( !wxStatusBarGeneric::Create( parent , id , style , name ) )
+        return FALSE ;
+    
+    if ( parent->MacGetTopLevelWindow()->MacGetMetalAppearance() )
+        MacSetBackgroundBrush( wxNullBrush ) ;    
+    
+    return TRUE ;
 }
 
 void wxStatusBarMac::DrawFieldText(wxDC& dc, int i)
 {
     int leftMargin = 2;
-    
+    int w, h ;
+    GetSize( &w , &h ) ;
     wxRect rect;
     GetFieldRect(i, rect);
     
-    if ( !IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) )
+    if ( !MacIsReallyHilited()  )
     {
         dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ;
     }
@@ -74,7 +82,10 @@ void wxStatusBarMac::DrawFieldText(wxDC& dc, int i)
     int xpos = rect.x + leftMargin + 1 ;
     int ypos = 1 ;
     
-    dc.SetClippingRegion(rect.x, 0, rect.width, m_height);
+    if ( MacGetTopLevelWindow()->MacGetMetalAppearance()  )
+        ypos++ ;
+        
+    dc.SetClippingRegion(rect.x, 0, rect.width, h);
     
     dc.DrawText(text, xpos, ypos);
     
@@ -94,8 +105,10 @@ void wxStatusBarMac::SetStatusText(const wxString& text, int number)
     m_statusStrings[number] = text;
     wxRect rect;
     GetFieldRect(number, rect);
+    int w, h ;
+    GetSize( &w , &h ) ;
     rect.y=0;
-    rect.height = m_height ;
+    rect.height = h ;
     Refresh( TRUE , &rect ) ;
     Update();
 }
@@ -107,14 +120,19 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) )
 
     int major,minor;
     wxGetOsVersion( &major, &minor );
+    int w, h ;
+    GetSize( &w , &h ) ;
 
-       if ( IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) )
+       if ( MacIsReallyHilited() )
        {
                wxPen white( wxWHITE , 1 , wxSOLID ) ;
-        if (major >= 10) 
+        if (major >= 10 
         {
             //Finder statusbar border color: (Project builder similar is 9B9B9B)
-            dc.SetPen(wxPen(wxColour(0xB1,0xB1,0xB1),1,wxSOLID));  
+            if ( MacGetTopLevelWindow()->MacGetMetalAppearance() )
+                dc.SetPen(wxPen(wxColour(0x40,40,40) ,1,wxSOLID)) ;
+            else
+                dc.SetPen(wxPen(wxColour(0xB1,0xB1,0xB1),1,wxSOLID));  
         }
         else
         {
@@ -122,10 +140,10 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) )
             dc.SetPen(black);
        }
                dc.DrawLine(0, 0 ,
-                      m_width , 0);
+                      w , 0);
                dc.SetPen(white);
                dc.DrawLine(0, 1 ,
-                      m_width , 1);
+                      w , 1);
        }
        else
        {
@@ -136,7 +154,7 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) )
             dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID));
 
                dc.DrawLine(0, 0 ,
-                      m_width , 0);
+                      w , 0);
        }
 
        int i;
@@ -148,8 +166,8 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) )
                DrawField(dc, i);
 }
 
-void wxStatusBarMac::MacSuperEnabled( bool enabled ) 
+void wxStatusBarMac::MacHiliteChanged()
 {
-    Refresh(FALSE) ;
-    wxWindow::MacSuperEnabled( enabled ) ;
+    Refresh() ;
+    Update() ;
 }