From 50c538600e7586c256fe0145ac8054f045be6fbb Mon Sep 17 00:00:00 2001
From: Julian Smart <julian@anthemion.co.uk>
Date: Sun, 29 Aug 2004 10:22:34 +0000
Subject: [PATCH] First step in background erase optimization

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/window.tex | 35 +++++++++++++++++++++++++++++++++++
 include/wx/defs.h        | 11 +++++++++++
 include/wx/window.h      |  7 ++++++-
 src/common/wincmn.cpp    |  2 ++
 4 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/docs/latex/wx/window.tex b/docs/latex/wx/window.tex
index 12745281a3..eb5af0361b 100644
--- a/docs/latex/wx/window.tex
+++ b/docs/latex/wx/window.tex
@@ -700,6 +700,23 @@ Returns the background colour of the window.
 \helpref{wxWindow::SetForegroundColour}{wxwindowsetforegroundcolour},\rtfsp
 \helpref{wxWindow::GetForegroundColour}{wxwindowgetforegroundcolour}
 
+\membersection{wxWindow::GetBackgroundStyle}\label{wxwindowgetbackgroundstyle}
+
+\constfunc{virtual wxBackgroundStyle}{GetBackgroundStyle}{\void}
+
+Returns the background style of the window. The background style indicates
+whether background colour should be determined by the system (wxBG\_STYLE\_SYSTEM),
+be set to a specific colour (wxBG\_STYLE\_COLOUR), or should be left to the
+application to implement (wxBG\_STYLE\_CUSTOM).
+
+On GTK+, use of wxBG\_STYLE\_CUSTOM allows the flicker-free drawing of a custom
+background, such as a tiled bitmap. Currently the style has no effect on other platforms.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetBackgroundColour}{wxwindowsetbackgroundcolour},\rtfsp
+\helpref{wxWindow::GetForegroundColour}{wxwindowgetforegroundcolour},\rtfsp
+\helpref{wxWindow::SetBackgroundStyle}{wxwindowsetbackgroundstyle}
 
 \membersection{wxWindow::GetBestFittingSize}\label{wxwindowgetbestfittingsize}
 
@@ -2431,6 +2448,24 @@ applications on the system.
 \helpref{wxWindow::Refresh}{wxwindowrefresh},\rtfsp
 \helpref{wxEraseEvent}{wxeraseevent}
 
+\membersection{wxWindow::SetBackgroundStyle}\label{wxwindowsetbackgroundstyle}
+
+\func{virtual void}{SetBackgroundStyle}{\param{wxBackgroundStyle}{ style}}
+
+Sets the background style of the window. The background style indicates
+whether background colour should be determined by the system (wxBG\_STYLE\_SYSTEM),
+be set to a specific colour (wxBG\_STYLE\_COLOUR), or should be left to the
+application to implement (wxBG\_STYLE\_CUSTOM).
+
+On GTK+, use of wxBG\_STYLE\_CUSTOM allows the flicker-free drawing of a custom
+background, such as a tiled bitmap. Currently the style has no effect on other platforms.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetBackgroundColour}{wxwindowsetbackgroundcolour},\rtfsp
+\helpref{wxWindow::GetForegroundColour}{wxwindowgetforegroundcolour},\rtfsp
+\helpref{wxWindow::GetBackgroundStyle}{wxwindowgetbackgroundstyle}
+
 
 \membersection{wxWindow::SetBestFittingSize}\label{wxwindowsetbestfittingsize}
 
diff --git a/include/wx/defs.h b/include/wx/defs.h
index 354fe9842b..1fde195268 100644
--- a/include/wx/defs.h
+++ b/include/wx/defs.h
@@ -1405,6 +1405,17 @@ enum wxBorder
 #define  wxMORE                 0x00010000
 #define  wxSETUP                0x00020000
 
+/*
+ * Background styles. See wxWindow::SetBackgroundStyle
+ */
+
+enum wxBackgroundStyle
+{
+  wxBG_STYLE_SYSTEM,
+  wxBG_STYLE_COLOUR,
+  wxBG_STYLE_CUSTOM
+};
+
 /*  ---------------------------------------------------------------------------- */
 /*  standard IDs */
 /*  ---------------------------------------------------------------------------- */
diff --git a/include/wx/window.h b/include/wx/window.h
index dd75d380ee..a407cbbb04 100644
--- a/include/wx/window.h
+++ b/include/wx/window.h
@@ -751,6 +751,11 @@ public:
     }
     wxColour GetForegroundColour() const;
 
+        // Set/get the background style.
+        // Pass one of wxBG_STYLE_SYSTEM, wxBG_STYLE_COLOUR, wxBG_STYLE_CUSTOM
+    virtual bool SetBackgroundStyle(wxBackgroundStyle style) { m_backgroundStyle = style; return true; }
+    virtual wxBackgroundStyle GetBackgroundStyle() const { return m_backgroundStyle; }
+
         // set/retrieve the font for the window (SetFont() returns true if the
         // font really changed)
     virtual bool SetFont(const wxFont& font) = 0;
@@ -1150,7 +1155,7 @@ protected:
                          m_exStyle;
     wxString             m_windowName;
     bool                 m_themeEnabled;
-
+    wxBackgroundStyle    m_backgroundStyle;
 #if wxUSE_PALETTE
     wxPalette            m_palette;
     bool                 m_hasCustomPalette;
diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp
index f6551938a2..c4fba2a8ab 100644
--- a/src/common/wincmn.cpp
+++ b/src/common/wincmn.cpp
@@ -152,6 +152,8 @@ wxWindowBase::wxWindowBase()
     // no style bits
     m_exStyle =
     m_windowStyle = 0;
+    
+    m_backgroundStyle = wxBG_STYLE_SYSTEM;
 
 #if wxUSE_CONSTRAINTS
     // no constraints whatsoever
-- 
2.50.0

