]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/theme.cpp
removed src/gtk/eggtrayicon.h
[wxWidgets.git] / src / univ / theme.cpp
index b108a21b16b2aeef4a55de3263c8ac40f8a06732..ba0749f97dcfb618c541750593bdb7459d41ce67 100644 (file)
@@ -5,8 +5,8 @@
 // Modified by:
 // Created:     06.08.00
 // RCS-ID:      $Id$
 // Modified by:
 // Created:     06.08.00
 // RCS-ID:      $Id$
-// Copyright:   (c) 2000 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Copyright:   (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ===========================================================================
 ///////////////////////////////////////////////////////////////////////////////
 
 // ===========================================================================
@@ -17,7 +17,7 @@
 // headers
 // ---------------------------------------------------------------------------
 
 // headers
 // ---------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "theme.h"
 #endif
 
     #pragma implementation "theme.h"
 #endif
 
@@ -33,6 +33,8 @@
     #include "wx/log.h"
 #endif // WX_PRECOMP
 
     #include "wx/log.h"
 #endif // WX_PRECOMP
 
+#include "wx/artprov.h"
+
 #include "wx/univ/renderer.h"
 #include "wx/univ/inphand.h"
 #include "wx/univ/theme.h"
 #include "wx/univ/renderer.h"
 #include "wx/univ/inphand.h"
 #include "wx/univ/theme.h"
@@ -64,7 +66,7 @@ wxThemeInfo::wxThemeInfo(Constructor c,
     wxThemeInfo *info = ms_allThemes;
     while ( info )
     {
     wxThemeInfo *info = ms_allThemes;
     while ( info )
     {
-        if ( name == info->name )
+        if ( name.CmpNoCase(info->name) == 0 )
         {
             return info->ctor();
         }
         {
             return info->ctor();
         }
@@ -84,7 +86,7 @@ wxThemeInfo::wxThemeInfo(Constructor c,
     if ( ms_theme )
     {
         // we already have a theme
     if ( ms_theme )
     {
         // we already have a theme
-        return TRUE;
+        return true;
     }
 
     wxString nameDefTheme;
     }
 
     wxString nameDefTheme;
@@ -97,36 +99,51 @@ wxThemeInfo::wxThemeInfo(Constructor c,
     }
     else // use native theme by default
     {
     }
     else // use native theme by default
     {
-        #if defined(__WXMSW__)
-            nameDefTheme = _T("win32");
-        #elif defined(__WXGTK__)
+        #if defined(__WXGTK__)
             nameDefTheme = _T("gtk");
             nameDefTheme = _T("gtk");
+        #elif defined(__WXX11__)
+            nameDefTheme = _T("win32");
+        #else
+            nameDefTheme = _T("win32");
         #endif
     }
 
         #endif
     }
 
-    ms_theme = Create(nameDefTheme);
+    wxTheme *theme = Create(nameDefTheme);
 
     // fallback to the first one in the list
 
     // fallback to the first one in the list
-    if ( !ms_theme && ms_allThemes )
+    if ( !theme && ms_allThemes )
     {
     {
-        ms_theme = ms_allThemes->ctor();
+        theme = ms_allThemes->ctor();
     }
 
     // abort if still nothing
     }
 
     // abort if still nothing
-    if ( !ms_theme )
+    if ( !theme )
     {
         wxLogError(_("Failed to initialize GUI: no built-in themes found."));
 
     {
         wxLogError(_("Failed to initialize GUI: no built-in themes found."));
 
-        return FALSE;
+        return false;
     }
 
     }
 
-    return TRUE;
+    // Set the theme as current.
+    wxTheme::Set(theme);
+
+    return true;
 }
 
 /* static */ wxTheme *wxTheme::Set(wxTheme *theme)
 {
     wxTheme *themeOld = ms_theme;
     ms_theme = theme;
 }
 
 /* static */ wxTheme *wxTheme::Set(wxTheme *theme)
 {
     wxTheme *themeOld = ms_theme;
     ms_theme = theme;
+
+    if ( ms_theme )
+    {
+        // automatically start using the art provider of the new theme if it
+        // has one
+        wxArtProvider *art = ms_theme->GetArtProvider();
+        if ( art )
+            wxArtProvider::PushProvider(art);
+    }
+
     return themeOld;
 }
 
     return themeOld;
 }