]> git.saurik.com Git - wxWidgets.git/commitdiff
Added CanApplyParentThemeBackground and use it in wxMSW's
authorRobin Dunn <robin@alldunn.com>
Thu, 4 Mar 2004 17:03:55 +0000 (17:03 +0000)
committerRobin Dunn <robin@alldunn.com>
Thu, 4 Mar 2004 17:03:55 +0000 (17:03 +0000)
wxNotebook::ApplyThemeBackground.  It's in the common base classes so
that someday it's usage can expand to the other platforms as well.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26085 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

15 files changed:
include/wx/bmpbuttn.h
include/wx/checkbox.h
include/wx/generic/panelg.h
include/wx/html/htmlwin.h
include/wx/msw/radiobut.h
include/wx/notebook.h
include/wx/popupwin.h
include/wx/radiobox.h
include/wx/slider.h
include/wx/statbox.h
include/wx/statline.h
include/wx/stattext.h
include/wx/vlbox.h
include/wx/window.h
src/msw/notebook.cpp

index ebaafefda3e9d55d27add37d2e35bf9e8bac3f02..6827496a50827bfb229e6f77e036681a0af2e250 100644 (file)
@@ -61,6 +61,8 @@ public:
     int GetMarginX() const { return m_marginX; }
     int GetMarginY() const { return m_marginY; }
 
+    virtual bool CanApplyParentThemeBackground() const { return true; }
+
 protected:
     // function called when any of the bitmaps changes
     virtual void OnSetBitmap() { }
index 6b30a0a25fa57aa88190f39501fd8fc7f7b880b0..bb97f9d5ca1bef70fa9db3f7a0ebfc82aa807a72 100644 (file)
@@ -106,6 +106,8 @@ public:
         return HasFlag(wxCHK_ALLOW_3RD_STATE_FOR_USER);
     }
 
+    virtual bool CanApplyParentThemeBackground() const { return true; }
+
 protected:
     virtual void DoSet3StateValue(wxCheckBoxState WXUNUSED(state)) { wxFAIL; }
 
index b79a59e0f4906f721497a4830e8ddaa3a64987d6..9fbe9ceb26936c304a0f02a619697cf24bb3bd2d 100644 (file)
@@ -86,6 +86,8 @@ public:
     virtual bool ProvidesBackground() const { return TRUE; }
 #endif
 
+    virtual bool CanApplyParentThemeBackground() const { return true; }
+    
     WX_DECLARE_CONTROL_CONTAINER();
 
 protected:
index c62febbf6db545eab7dc62711aef4c9a647972e9..f8b88670d78b9b1ecd48dffd715cf71156c3e216 100644 (file)
@@ -198,6 +198,8 @@ public:
     void SelectAll();
 #endif
 
+    virtual bool CanApplyParentThemeBackground() const { return false; }
+    
 protected:
     void Init();
 
index b47ee2e241ed5fb7aae8d01c16cba9174e8ed0b4..b04f477ae62870592c14f37c79fe1d38af9123fe 100644 (file)
@@ -52,6 +52,7 @@ public:
     // implementation only from now on
     virtual bool MSWCommand(WXUINT param, WXWORD id);
     virtual void Command(wxCommandEvent& event);
+    virtual bool CanApplyParentThemeBackground() const { return true; }
 
 protected:
     virtual wxSize DoGetBestSize() const;
index d29d1a32e15633e9ae51bedadb5ae3c1fbf474fc..ef5419d80747412afbd8534e5868d1f3597b328e 100644 (file)
@@ -86,6 +86,7 @@ public:
 
     // implement some base class functions
     virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
+    virtual bool CanApplyParentThemeBackground() const { return true; }
 
 protected:
     DECLARE_NO_COPY_CLASS(wxNotebookBase)
index 6eb26bacb7426b17dae35dc80a5fe3439d0dce85..18ca40e2f31ebe97ec74e37a072b8f6d93417814 100644 (file)
@@ -46,6 +46,8 @@ public:
     virtual void Position(const wxPoint& ptOrigin,
                           const wxSize& size);
 
+    virtual bool IsTopLevel() const { return TRUE; }
+
     DECLARE_NO_COPY_CLASS(wxPopupWindowBase)
 };
 
index 0a189080210752b81a3eaf7e6ac949033c7285b2..575fab95d9bb7cbeea6362bcd6def4ae660df0d2 100644 (file)
@@ -86,6 +86,8 @@ public:
     // return the item above/below/to the left/right of the given one
     int GetNextItem(int item, wxDirection dir, long style) const;
 
+    virtual bool CanApplyParentThemeBackground() const { return true; }
+    
     // for compatibility only, don't use these methods in new code!
 #if WXWIN_COMPATIBILITY_2_2
     int Number() const { return GetCount(); }
index 894b8515fa649bc537d17f636f0951e496a386cc..512e40132880a92aff4f8fd4cc2c307d8edc23e5 100644 (file)
@@ -80,6 +80,9 @@ public:
     virtual int GetSelStart() const { return GetMax(); }
     virtual void SetSelection(int WXUNUSED(min), int WXUNUSED(max)) { }
 
+
+    virtual bool CanApplyParentThemeBackground() const { return true; }
+
 private:
     DECLARE_NO_COPY_CLASS(wxSliderBase)
 };
index c0a5ed5da3900cb5bc46067ceb05b5b7906936c5..4d409ab3737b9e821e9c0f0b72a8cd2b574347db 100644 (file)
@@ -17,7 +17,8 @@ public:
     wxStaticBoxBase() { }
 
     // overriden base class virtuals
-    virtual bool AcceptsFocus() const { return FALSE; }
+    virtual bool AcceptsFocus() const { return false; }
+    virtual bool CanApplyParentThemeBackground() const { return true; }
 
 private:
     DECLARE_NO_COPY_CLASS(wxStaticBoxBase)
index 6a8b7db0d5ccbbefd03be657775c6cdfeb2a8c46..6beb05a2c597bc0a5b0901ab94b95999a159f5d5 100644 (file)
@@ -47,7 +47,8 @@ public:
     static int GetDefaultSize() { return 2; }
 
     // overriden base class virtuals
-    virtual bool AcceptsFocus() const { return FALSE; }
+    virtual bool AcceptsFocus() const { return false; }
+    virtual bool CanApplyParentThemeBackground() const { return true; }
 
 protected:
     // set the right size for the right dimension
index 6af02942a75ded6be43226c00931b61d6acfa0c1..525ad9eb8dc7965c24815fdbf1eeb6f5defbb0ac 100644 (file)
@@ -12,8 +12,9 @@ class WXDLLEXPORT wxStaticTextBase : public wxControl
 public:
     wxStaticTextBase() { }
 
-    // overriden base cirtuals
-    virtual bool AcceptsFocus() const { return FALSE; }
+    // overriden base virtuals
+    virtual bool AcceptsFocus() const { return false; }
+    virtual bool CanApplyParentThemeBackground() const { return true; }
 
 private:
     DECLARE_NO_COPY_CLASS(wxStaticTextBase)
index 8c8223dd4b9bcdd5e897dbecfa3e8b32d5eccdf5..42c5ce2ad47217483a29fe597cca3c4012214334 100644 (file)
@@ -189,6 +189,8 @@ public:
     void SetSelectionBackground(const wxColour& col);
 
 
+    virtual bool CanApplyParentThemeBackground() const { return false; }
+    
 protected:
     // the derived class must implement this function to actually draw the item
     // with the given index on the provided DC
index f1eed002acc885d35be42bb3769890c14cd817fb..b02a9ecf44c21f8d0ebd24a20e85688e88f75ddb 100644 (file)
@@ -394,6 +394,13 @@ public:
     virtual void SetThemeEnabled(bool enableTheme) { m_themeEnabled = enableTheme; }
     virtual bool GetThemeEnabled() const { return m_themeEnabled; }
 
+        // Returns true if this class should have the background colour
+        // changed to match the parent window's theme.  For example when a
+        // page is added to a notebook it and it's children may need to have
+        // the colours adjusted depending on the current theme settings, but
+        // not all windows/controls can do this without looking wrong.
+    virtual bool CanApplyParentThemeBackground() const { return false; }
+    
         // returns true if this window should inherit its parent colours on
         // creation
     virtual bool ShouldInheritColours() const { return false; }
index c027ef2d79af09c84a42a182cc1e02f063e5ca8f..e04027b7dad546df6269007a9e6ffe1bf34765db 100644 (file)
@@ -966,24 +966,15 @@ void wxNotebook::ApplyThemeBackground(wxWindow*, const wxColour&)
 #endif
 {
 #if wxUSE_UXTHEME
-    // Don't set the background for buttons since this will
-    // switch it into ownerdraw mode
+    // Special case for wxButton: Don't set the background for buttons since
+    // this will switch it into ownerdraw mode
     if (window->IsKindOf(CLASSINFO(wxButton)) && !window->IsKindOf(CLASSINFO(wxBitmapButton)))
         // This is essential, otherwise you'll see dark grey
         // corners in the buttons.
         ((wxButton*)window)->wxControl::SetBackgroundColour(colour);
-    else if (window->IsKindOf(CLASSINFO(wxStaticText)) ||
-             window->IsKindOf(CLASSINFO(wxStaticBox)) ||
-             window->IsKindOf(CLASSINFO(wxStaticLine)) ||
-             window->IsKindOf(CLASSINFO(wxRadioButton)) ||
-             window->IsKindOf(CLASSINFO(wxRadioBox)) ||
-             window->IsKindOf(CLASSINFO(wxCheckBox)) ||
-             window->IsKindOf(CLASSINFO(wxBitmapButton)) ||
-             window->IsKindOf(CLASSINFO(wxSlider)) ||
-             window->IsKindOf(CLASSINFO(wxPanel)) ||
-             (window->IsKindOf(CLASSINFO(wxNotebook)) && (window != this)) ||
-             window->IsKindOf(CLASSINFO(wxScrolledWindow))
-        )
+
+    // for all other classes let them decide
+    else if ((window != this) && window->CanApplyParentThemeBackground())
     {
         window->SetBackgroundColour(colour);
     }