X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6dbc7fb4e5865133659c194d73f34e91bbe7e8d0..eb69d46e705906142f5c814f31c892282f4b583c:/src/mac/carbon/statbrma.cpp diff --git a/src/mac/carbon/statbrma.cpp b/src/mac/carbon/statbrma.cpp index c06702058d..8220559531 100644 --- a/src/mac/carbon/statbrma.cpp +++ b/src/mac/carbon/statbrma.cpp @@ -1,11 +1,11 @@ /////////////////////////////////////////////////////////////////////////////// // Name: statbar.cpp // Purpose: native implementation of wxStatusBar (optional) -// Author: AUTHOR +// Author: Stefan Csomor // Modified by: -// Created: ??/??/98 +// Created: 1998-01-01 // RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR +// Copyright: (c) 1998 Stefan Csomor // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -22,11 +22,12 @@ #include "wx/dcclient.h" BEGIN_EVENT_TABLE(wxStatusBarMac, wxStatusBarGeneric) - EVT_PAINT(wxStatusBarMac::OnPaint) + EVT_PAINT(wxStatusBarMac::OnPaint) END_EVENT_TABLE() #ifdef __WXMAC__ #include "wx/mac/private.h" +#include "wx/toplevel.h" #endif // ============================================================================ @@ -47,38 +48,48 @@ wxStatusBarMac::~wxStatusBarMac() } bool wxStatusBarMac::Create(wxWindow *parent, wxWindowID id, - long style , - const wxString& name) + 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; - - wxRect rect; - GetFieldRect(i, rect); - - if ( !IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) ) - { - dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ; - } - - wxString text(GetStatusText(i)); - - long x, y; - - dc.GetTextExtent(text, &x, &y); - - int xpos = rect.x + leftMargin + 1 ; - int ypos = 2 ; - - dc.SetClippingRegion(rect.x, 0, rect.width, m_height); - - dc.DrawText(text, xpos, ypos); - - dc.DestroyClippingRegion(); + int leftMargin = 2; + int w, h ; + GetSize( &w , &h ) ; + wxRect rect; + GetFieldRect(i, rect); + + if ( !MacIsReallyHilited() ) + { + dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ; + } + + wxString text(GetStatusText(i)); + + long x, y; + + dc.GetTextExtent(text, &x, &y); + + int xpos = rect.x + leftMargin + 1 ; + int ypos = 1 ; + + if ( MacGetTopLevelWindow()->MacGetMetalAppearance() ) + ypos++ ; + + dc.SetClippingRegion(rect.x, 0, rect.width, h); + + dc.DrawText(text, xpos, ypos); + + dc.DestroyClippingRegion(); } void wxStatusBarMac::DrawField(wxDC& dc, int i) @@ -89,14 +100,17 @@ void wxStatusBarMac::DrawField(wxDC& dc, int i) void wxStatusBarMac::SetStatusText(const wxString& text, int number) { wxCHECK_RET( (number >= 0) && (number < m_nFields), - _T("invalid status bar field index") ); - + _T("invalid status bar field index") ); + 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(); } void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) ) @@ -104,23 +118,43 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) ) wxPaintDC dc(this); dc.Clear() ; - if ( IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) ) + int major,minor; + wxGetOsVersion( &major, &minor ); + int w, h ; + GetSize( &w , &h ) ; + + if ( MacIsReallyHilited() ) { - wxPen black( wxBLACK , 1 , wxSOLID ) ; wxPen white( wxWHITE , 1 , wxSOLID ) ; - - dc.SetPen(black); + if (major >= 10 ) + { + //Finder statusbar border color: (Project builder similar is 9B9B9B) + if ( MacGetTopLevelWindow()->MacGetMetalAppearance() ) + dc.SetPen(wxPen(wxColour(0x40,40,40) ,1,wxSOLID)) ; + else + dc.SetPen(wxPen(wxColour(0xB1,0xB1,0xB1),1,wxSOLID)); + } + else + { + wxPen black( wxBLACK , 1 , wxSOLID ) ; + 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 { - dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID)); + if (major >= 10) + //Finder statusbar border color: (Project builder similar is 9B9B9B) + dc.SetPen(wxPen(wxColour(0xB1,0xB1,0xB1),1,wxSOLID)); + else + dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID)); + dc.DrawLine(0, 0 , - m_width , 0); + w , 0); } int i; @@ -132,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() ; }