From f8ff87ed6da8c739c58e50c567b5f746630416f3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Wed, 30 Jun 2004 13:05:20 +0000 Subject: [PATCH] decoupled attributes inheritance and m_hasXXX flags git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/window.h | 15 ++++++++++----- src/common/wincmn.cpp | 12 +++++++++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/include/wx/window.h b/include/wx/window.h index 566ba6c19d..1c67cddef1 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -725,13 +725,13 @@ public: // set/retrieve the window colours (system defaults are used by // default): SetXXX() functions return true if colour was changed, - // SetDefaultXXX() reset the "m_hasXXX" flag after setting the value - // to prevent it from being inherited by our children + // SetDefaultXXX() reset the "m_inheritXXX" flag after setting the + // value to prevent it from being inherited by our children virtual bool SetBackgroundColour(const wxColour& colour); void SetDefaultBackgroundColour(const wxColour& colour) { if ( SetBackgroundColour(colour) ) - m_hasBgCol = false; + m_inheritBgCol = false; } wxColour GetBackgroundColour() const; @@ -739,7 +739,7 @@ public: void SetDefaultForegroundColour(const wxColour& colour) { if ( SetForegroundColour(colour) ) - m_hasFgCol = false; + m_inheritFgCol = false; } wxColour GetForegroundColour() const; @@ -749,7 +749,7 @@ public: void SetDefaultFont(const wxFont& font) { if ( SetFont(font) ) - m_hasFont = false; + m_inheritFont = false; } wxFont GetFont() const; @@ -1120,6 +1120,11 @@ protected: bool m_hasBgCol:1; bool m_hasFgCol:1; bool m_hasFont:1; + + // and should it be inherited by children? + bool m_inheritBgCol:1; + bool m_inheritFgCol:1; + bool m_inheritFont:1; // window attributes long m_windowStyle, diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 7c4c0ce62c..5c24fd2e89 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -145,6 +145,9 @@ wxWindowBase::wxWindowBase() m_hasBgCol = m_hasFgCol = m_hasFont = false; + m_inheritBgCol = + m_inheritFgCol = + m_inheritFont = false; // no style bits m_exStyle = @@ -942,17 +945,17 @@ void wxWindowBase::InheritAttributes() // which ensures that this only happens if the user really wants it and // not by default which wouldn't make any sense in modern GUIs where the // controls don't all use the same fonts (nor colours) - if ( parent->m_hasFont && !m_hasFont ) + if ( parent->m_inheritFont && !m_hasFont ) SetFont(parent->GetFont()); // in addition, there is a possibility to explicitly forbid inheriting // colours at each class level by overriding ShouldInheritColours() if ( ShouldInheritColours() ) { - if ( parent->m_hasFgCol && !m_hasFgCol ) + if ( parent->m_inheritFgCol && !m_hasFgCol ) SetForegroundColour(parent->GetForegroundColour()); - if ( parent->m_hasBgCol && !m_hasBgCol ) + if ( parent->m_inheritBgCol && !m_hasBgCol ) SetBackgroundColour(parent->GetBackgroundColour()); } } @@ -1017,6 +1020,7 @@ bool wxWindowBase::SetBackgroundColour( const wxColour &colour ) return false; m_hasBgCol = colour.Ok(); + m_inheritBgCol = m_hasBgCol; m_backgroundColour = colour; SetThemeEnabled( !m_hasBgCol && !m_foregroundColour.Ok() ); return true; @@ -1028,6 +1032,7 @@ bool wxWindowBase::SetForegroundColour( const wxColour &colour ) return false; m_hasFgCol = colour.Ok(); + m_inheritFgCol = m_hasFgCol; m_foregroundColour = colour; SetThemeEnabled( !m_hasFgCol && !m_backgroundColour.Ok() ); return true; @@ -1075,6 +1080,7 @@ bool wxWindowBase::SetFont(const wxFont& font) m_font = font; m_hasFont = font.Ok(); + m_inheritFont = m_hasFont; return true; } -- 2.45.2