From: Stefan Csomor Date: Mon, 29 Mar 2004 08:39:31 +0000 (+0000) Subject: added hilite change notification X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/8ab505498d90cbedb2095d71f7a084d54300aba8?ds=inline added hilite change notification git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/mac/carbon/statusbr.h b/include/wx/mac/carbon/statusbr.h index a039ed6ef8..5fb70f4058 100644 --- a/include/wx/mac/carbon/statusbr.h +++ b/include/wx/mac/carbon/statusbr.h @@ -41,6 +41,8 @@ class WXDLLEXPORT wxStatusBarMac : public wxStatusBarGeneric //////////////////////////////////////////////////////////////////////// // Implementation + virtual void MacHiliteChanged() ; + void OnPaint(wxPaintEvent& event); protected: diff --git a/include/wx/mac/carbon/window.h b/include/wx/mac/carbon/window.h index 5ec518e4a7..cb2349c71d 100644 --- a/include/wx/mac/carbon/window.h +++ b/include/wx/mac/carbon/window.h @@ -182,9 +182,11 @@ public: virtual void MacVisibilityChanged() ; virtual void MacEnabledStateChanged() ; + virtual void MacHiliteChanged() ; bool MacIsReallyShown() ; bool MacIsReallyEnabled() ; + bool MacIsReallyHilited() ; bool MacIsUserPane() { return m_macIsUserPane; } @@ -241,8 +243,10 @@ protected: void MacCreateScrollBars( long style ) ; void MacRepositionScrollBars() ; void MacUpdateControlFont() ; + void MacPropagateVisibilityChanged() ; void MacPropagateEnabledStateChanged() ; + void MacPropagateHiliteChanged() ; #if WXWIN_COMPATIBILITY_2_4 diff --git a/src/mac/carbon/statbrma.cpp b/src/mac/carbon/statbrma.cpp index 29131affcd..84a303d552 100644 --- a/src/mac/carbon/statbrma.cpp +++ b/src/mac/carbon/statbrma.cpp @@ -67,7 +67,7 @@ void wxStatusBarMac::DrawFieldText(wxDC& dc, int i) wxRect rect; GetFieldRect(i, rect); - if ( !MacGetTopLevelWindow()->MacGetMetalAppearance() && !IsWindowHilited( MAC_WXHWND( MacGetTopLevelWindowRef() ) ) ) + if ( !MacIsReallyHilited() ) { dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ; } @@ -79,8 +79,11 @@ void wxStatusBarMac::DrawFieldText(wxDC& dc, int i) dc.GetTextExtent(text, &x, &y); int xpos = rect.x + leftMargin + 1 ; - int ypos = 2 ; + int ypos = 1 ; + if ( MacGetTopLevelWindow()->MacGetMetalAppearance() ) + ypos++ ; + dc.SetClippingRegion(rect.x, 0, rect.width, h); dc.DrawText(text, xpos, ypos); @@ -119,7 +122,7 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) ) int w, h ; GetSize( &w , &h ) ; - if ( IsWindowHilited( MAC_WXHWND( MacGetTopLevelWindowRef() ) ) || MacGetTopLevelWindow()->MacGetMetalAppearance() ) + if ( MacIsReallyHilited() ) { wxPen white( wxWHITE , 1 , wxSOLID ) ; if (major >= 10 ) @@ -161,3 +164,9 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) ) for ( i = 0; i < m_nFields; i ++ ) DrawField(dc, i); } + +void wxStatusBarMac::MacHiliteChanged() +{ + Refresh() ; + Update() ; +} diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index 4fd7b3e40b..a96a6631f0 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -1013,6 +1013,7 @@ void wxTopLevelWindowMac::MacActivate( long timestamp , bool inIsActivating ) if(s_macDeactivateWindow==this) s_macDeactivateWindow=NULL; MacDelayedDeactivation(timestamp); + MacPropagateHiliteChanged() ; } void wxTopLevelWindowMac::SetTitle(const wxString& title) diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index 0a17b278dc..9d09716b24 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -1503,6 +1503,41 @@ wxString wxWindowMac::GetTitle() const return m_label ; } +bool wxWindowMac::Show(bool show) +{ + if ( !wxWindowBase::Show(show) ) + return FALSE; + + // TODO use visibilityChanged Carbon Event for OSX + bool former = MacIsReallyShown() ; + + SetControlVisibility( (ControlRef) m_macControl , show , true ) ; + if ( former != MacIsReallyShown() ) + MacPropagateVisibilityChanged() ; + return TRUE; +} + +bool wxWindowMac::Enable(bool enable) +{ + wxASSERT( m_macControl != NULL ) ; + if ( !wxWindowBase::Enable(enable) ) + return FALSE; + + bool former = MacIsReallyEnabled() ; + if ( enable ) + EnableControl( (ControlRef) m_macControl ) ; + else + DisableControl( (ControlRef) m_macControl ) ; + + if ( former != MacIsReallyEnabled() ) + MacPropagateEnabledStateChanged() ; + return TRUE; +} + +// +// status change propagations (will be not necessary for OSX later ) +// + void wxWindowMac::MacPropagateVisibilityChanged() { MacVisibilityChanged() ; @@ -1517,20 +1552,54 @@ void wxWindowMac::MacPropagateVisibilityChanged() } } -bool wxWindowMac::Show(bool show) +void wxWindowMac::MacPropagateEnabledStateChanged( ) { - if ( !wxWindowBase::Show(show) ) - return FALSE; + MacEnabledStateChanged() ; - // TODO use visibilityChanged Carbon Event for OSX - bool former = MacIsReallyShown() ; + wxWindowListNode *node = GetChildren().GetFirst(); + while ( node ) + { + wxWindowMac *child = node->GetData(); + if ( child->IsEnabled() ) + child->MacPropagateEnabledStateChanged() ; + node = node->GetNext(); + } +} + +void wxWindowMac::MacPropagateHiliteChanged( ) +{ + MacHiliteChanged() ; - SetControlVisibility( (ControlRef) m_macControl , show , true ) ; - if ( former != MacIsReallyShown() ) - MacPropagateVisibilityChanged() ; - return TRUE; + wxWindowListNode *node = GetChildren().GetFirst(); + while ( node ) + { + wxWindowMac *child = node->GetData(); + // if ( child->IsEnabled() ) + child->MacPropagateHiliteChanged() ; + node = node->GetNext(); + } +} + +// +// status change notifications +// + +void wxWindowMac::MacVisibilityChanged() +{ +} + +void wxWindowMac::MacHiliteChanged() +{ +} + +void wxWindowMac::MacEnabledStateChanged() +{ } +// +// status queries on the inherited window's state +// + bool wxWindowMac::MacIsReallyShown() { // only under OSX the visibility of the TLW is taken into account @@ -1552,50 +1621,20 @@ bool wxWindowMac::MacIsReallyShown() #endif } -void wxWindowMac::MacVisibilityChanged() -{ -} - -void wxWindowMac::MacPropagateEnabledStateChanged( ) -{ - MacEnabledStateChanged() ; - - wxWindowListNode *node = GetChildren().GetFirst(); - while ( node ) - { - wxWindowMac *child = node->GetData(); - if ( child->IsEnabled() ) - child->MacPropagateEnabledStateChanged() ; - node = node->GetNext(); - } -} - -bool wxWindowMac::Enable(bool enable) -{ - wxASSERT( m_macControl != NULL ) ; - if ( !wxWindowBase::Enable(enable) ) - return FALSE; - - bool former = MacIsReallyEnabled() ; - if ( enable ) - UMAActivateControl( (ControlRef) m_macControl ) ; - else - UMADeactivateControl( (ControlRef) m_macControl ) ; - - if ( former != MacIsReallyEnabled() ) - MacPropagateEnabledStateChanged() ; - return TRUE; -} - bool wxWindowMac::MacIsReallyEnabled() { return IsControlEnabled( (ControlRef) m_macControl ) ; } -void wxWindowMac::MacEnabledStateChanged() +bool wxWindowMac::MacIsReallyHilited() { + return IsControlActive( (ControlRef) m_macControl ) ; } +// +// +// + int wxWindowMac::GetCharHeight() const { wxClientDC dc ( (wxWindowMac*)this ) ;