]> git.saurik.com Git - wxWidgets.git/commitdiff
Added Set/GetThemeEnabled and used this for determining whether to paint a theme
authorJulian Smart <julian@anthemion.co.uk>
Fri, 15 Sep 2000 13:15:37 +0000 (13:15 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 15 Sep 2000 13:15:37 +0000 (13:15 +0000)
background.

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

13 files changed:
include/wx/window.h
src/common/wincmn.cpp
src/generic/statusbr.cpp
src/gtk/dialog.cpp
src/gtk/frame.cpp
src/gtk/notebook.cpp
src/gtk/tbargtk.cpp
src/gtk/window.cpp
src/gtk1/dialog.cpp
src/gtk1/frame.cpp
src/gtk1/notebook.cpp
src/gtk1/tbargtk.cpp
src/gtk1/window.cpp

index 61e65b7a9f9e47fece8c8d521cd41cf3b94ed9ba..2fc3e20a8a061685aa36bf9de36dc3f0621e0a59 100644 (file)
@@ -333,6 +333,9 @@ public:
         // make the window modal (all other windows unresponsive)
     virtual void MakeModal(bool modal = TRUE);
 
+    virtual void SetThemeEnabled(bool enableTheme) { m_themeEnabled = enableTheme; }
+    virtual bool GetThemeEnabled() const { return m_themeEnabled; }
+
     // focus handling
     // --------------
 
@@ -773,6 +776,7 @@ protected:
     long                 m_windowStyle,
                          m_exStyle;
     wxString             m_windowName;
+    bool                 m_themeEnabled;
 
 protected:
     // common part of all ctors: it is not virtual because it is called from
index c419076210298caa6bc7f76489373f115e987691..ef975509eaf419da83520ea8786c799de4568044 100644 (file)
@@ -162,6 +162,9 @@ void wxWindowBase::InitBase()
 #if wxUSE_CARET
     m_caret = (wxCaret *)NULL;
 #endif // wxUSE_CARET
+
+    // Whether we're using the current theme for this window (wxGTK only for now)
+    m_themeEnabled = FALSE;
 }
 
 // common part of window creation process
index 9121f45f62bb70ca62d653814bb2d27c865504e9..a65e6c1e5c13b518f296f86b48ad00c8832d19b5 100644 (file)
@@ -80,6 +80,7 @@ bool wxStatusBarGeneric::Create(wxWindow *parent,
   m_nFields = 0;
   m_borderX = wxTHICK_LINE_BORDER;
   m_borderY = wxTHICK_LINE_BORDER;
+  m_themeEnabled = TRUE;
 
   bool success = wxWindow::Create(parent, id,
                                   wxDefaultPosition, wxDefaultSize,
index 25f29828142536028b9adc657e154e132ff0fd37..b52338cef1e8e8829c87b05d864a7a5f4367e797 100644 (file)
@@ -231,6 +231,7 @@ void wxDialog::Init()
     m_returnCode = 0;
     m_sizeSet = FALSE;
     m_modalShowing = FALSE;
+    m_themeEnabled = TRUE;
 }
 
 wxDialog::wxDialog( wxWindow *parent,
index a0be42f520404ac819abbc5fd4a2009dfed5f1dd..bb7d68e74fdd7b6ffc17e61f3aaf2326a8da8283 100644 (file)
@@ -449,6 +449,7 @@ void wxFrame::Init()
     m_insertInClientArea = TRUE;
     m_isIconized = FALSE;
     m_fsIsShowing = FALSE;
+    m_themeEnabled = TRUE;
 }
 
 bool wxFrame::Create( wxWindow *parent,
@@ -1177,8 +1178,9 @@ void wxFrame::Maximize(bool WXUNUSED(maximize))
 
 bool wxFrame::IsMaximized() const
 {
-    wxFAIL_MSG( _T("not implemented") );
+  //    wxFAIL_MSG( _T("not implemented") );
 
+    // This is an approximation
     return FALSE;
 }
 
index 3626e86c461a04e89256808e17bb46a43c2d6319..a05a2f1b0058df1af8f062b8e007e7af8436897e 100644 (file)
@@ -216,6 +216,7 @@ void wxNotebook::Init()
     m_imageList = (wxImageList *) NULL;
     m_pages.DeleteContents( TRUE );
     m_lastSelection = -1;
+    m_themeEnabled = TRUE;
 }
 
 wxNotebook::wxNotebook()
@@ -561,6 +562,9 @@ bool wxNotebook::InsertPage( int position, wxNotebookPage* win, const wxString&
     gtk_signal_disconnect_by_func( GTK_OBJECT(m_widget),
       GTK_SIGNAL_FUNC(gtk_notebook_page_change_callback), (gpointer) this );
 
+    if (m_themeEnabled)
+        win->SetThemeEnabled(TRUE);
+
     GtkNotebook *notebook = GTK_NOTEBOOK(m_widget);
 
     wxGtkNotebookPage *page = new wxGtkNotebookPage();
index bac1d93d7907570283191c7bca177b94da978b17..06a06a0d5c8ef904b51877351934cb3661d37ee0 100644 (file)
@@ -220,10 +220,9 @@ void wxToolBar::Init()
 {
     m_fg =
     m_bg = (GdkColor *)NULL;
-
     m_toolbar = (GtkToolbar *)NULL;
-
     m_blockNextEvent = FALSE;
+    m_themeEnabled = TRUE;
 }
 
 wxToolBar::~wxToolBar()
index 1bd4d35d8331da5ca1232996165a8ead5698f464..cdbcf62cf0b040abc39aa54f315b3a14759f26ec 100644 (file)
@@ -680,7 +680,8 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
 */
                                 
     GtkPizza *pizza = GTK_PIZZA (widget);
-        
+
+/*        
     if (win->IsTopLevel())
     {
         gtk_paint_flat_box (win->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL,
@@ -695,6 +696,18 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
         gtk_paint_flat_box (parent->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL,
                    GTK_SHADOW_NONE, &gdk_event->area, parent->m_widget, "base", 0, 0, -1, -1);
     }
+*/
+    if (win->GetThemeEnabled())
+    {
+        wxWindow *parent = win->GetParent();
+        while (parent && !parent->IsTopLevel())
+            parent = parent->GetParent();
+        if (!parent)
+            parent = win;
+
+        gtk_paint_flat_box (parent->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL,
+                   GTK_SHADOW_NONE, &gdk_event->area, parent->m_widget, "base", 0, 0, -1, -1);
+    }
         
     win->GetUpdateRegion().Union( gdk_event->area.x,
                                   gdk_event->area.y,
index 25f29828142536028b9adc657e154e132ff0fd37..b52338cef1e8e8829c87b05d864a7a5f4367e797 100644 (file)
@@ -231,6 +231,7 @@ void wxDialog::Init()
     m_returnCode = 0;
     m_sizeSet = FALSE;
     m_modalShowing = FALSE;
+    m_themeEnabled = TRUE;
 }
 
 wxDialog::wxDialog( wxWindow *parent,
index a0be42f520404ac819abbc5fd4a2009dfed5f1dd..bb7d68e74fdd7b6ffc17e61f3aaf2326a8da8283 100644 (file)
@@ -449,6 +449,7 @@ void wxFrame::Init()
     m_insertInClientArea = TRUE;
     m_isIconized = FALSE;
     m_fsIsShowing = FALSE;
+    m_themeEnabled = TRUE;
 }
 
 bool wxFrame::Create( wxWindow *parent,
@@ -1177,8 +1178,9 @@ void wxFrame::Maximize(bool WXUNUSED(maximize))
 
 bool wxFrame::IsMaximized() const
 {
-    wxFAIL_MSG( _T("not implemented") );
+  //    wxFAIL_MSG( _T("not implemented") );
 
+    // This is an approximation
     return FALSE;
 }
 
index 3626e86c461a04e89256808e17bb46a43c2d6319..a05a2f1b0058df1af8f062b8e007e7af8436897e 100644 (file)
@@ -216,6 +216,7 @@ void wxNotebook::Init()
     m_imageList = (wxImageList *) NULL;
     m_pages.DeleteContents( TRUE );
     m_lastSelection = -1;
+    m_themeEnabled = TRUE;
 }
 
 wxNotebook::wxNotebook()
@@ -561,6 +562,9 @@ bool wxNotebook::InsertPage( int position, wxNotebookPage* win, const wxString&
     gtk_signal_disconnect_by_func( GTK_OBJECT(m_widget),
       GTK_SIGNAL_FUNC(gtk_notebook_page_change_callback), (gpointer) this );
 
+    if (m_themeEnabled)
+        win->SetThemeEnabled(TRUE);
+
     GtkNotebook *notebook = GTK_NOTEBOOK(m_widget);
 
     wxGtkNotebookPage *page = new wxGtkNotebookPage();
index bac1d93d7907570283191c7bca177b94da978b17..06a06a0d5c8ef904b51877351934cb3661d37ee0 100644 (file)
@@ -220,10 +220,9 @@ void wxToolBar::Init()
 {
     m_fg =
     m_bg = (GdkColor *)NULL;
-
     m_toolbar = (GtkToolbar *)NULL;
-
     m_blockNextEvent = FALSE;
+    m_themeEnabled = TRUE;
 }
 
 wxToolBar::~wxToolBar()
index 1bd4d35d8331da5ca1232996165a8ead5698f464..cdbcf62cf0b040abc39aa54f315b3a14759f26ec 100644 (file)
@@ -680,7 +680,8 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
 */
                                 
     GtkPizza *pizza = GTK_PIZZA (widget);
-        
+
+/*        
     if (win->IsTopLevel())
     {
         gtk_paint_flat_box (win->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL,
@@ -695,6 +696,18 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
         gtk_paint_flat_box (parent->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL,
                    GTK_SHADOW_NONE, &gdk_event->area, parent->m_widget, "base", 0, 0, -1, -1);
     }
+*/
+    if (win->GetThemeEnabled())
+    {
+        wxWindow *parent = win->GetParent();
+        while (parent && !parent->IsTopLevel())
+            parent = parent->GetParent();
+        if (!parent)
+            parent = win;
+
+        gtk_paint_flat_box (parent->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL,
+                   GTK_SHADOW_NONE, &gdk_event->area, parent->m_widget, "base", 0, 0, -1, -1);
+    }
         
     win->GetUpdateRegion().Union( gdk_event->area.x,
                                   gdk_event->area.y,