]> git.saurik.com Git - wxWidgets.git/commitdiff
decoupled attributes inheritance and m_hasXXX flags
authorVáclav Slavík <vslavik@fastmail.fm>
Wed, 30 Jun 2004 13:05:20 +0000 (13:05 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Wed, 30 Jun 2004 13:05:20 +0000 (13:05 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/window.h
src/common/wincmn.cpp

index 566ba6c19d06aa55e6712a7a9bd051278e7babef..1c67cddef1b40953067042d22520cbbf7c8106bc 100644 (file)
@@ -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,
index 7c4c0ce62c6c2917c6ef8718c6819f27efe16a7d..5c24fd2e89fcbc31ed97af79de4ffb75768b3e3c 100644 (file)
@@ -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;
 }