X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/19193a2c85987b595932957e73013e7ea100f0e8..c77a67962c2f50a872491869fcf1a6c082fdc6c6:/src/univ/theme.cpp?ds=sidebyside diff --git a/src/univ/theme.cpp b/src/univ/theme.cpp index 254254b69a..ec64045d05 100644 --- a/src/univ/theme.cpp +++ b/src/univ/theme.cpp @@ -6,7 +6,7 @@ // Created: 06.08.00 // RCS-ID: $Id$ // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // =========================================================================== @@ -17,10 +17,6 @@ // headers // --------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "theme.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -33,6 +29,8 @@ #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" @@ -64,7 +62,7 @@ wxThemeInfo::wxThemeInfo(Constructor c, wxThemeInfo *info = ms_allThemes; while ( info ) { - if ( name == info->name ) + if ( name.CmpNoCase(info->name) == 0 ) { return info->ctor(); } @@ -84,7 +82,7 @@ wxThemeInfo::wxThemeInfo(Constructor c, if ( ms_theme ) { // we already have a theme - return TRUE; + return true; } wxString nameDefTheme; @@ -97,40 +95,51 @@ wxThemeInfo::wxThemeInfo(Constructor c, } else // use native theme by default { - #if defined(__WXMSW__) - nameDefTheme = _T("win32"); - #elif defined(__WXGTK__) + #if defined(__WXGTK__) nameDefTheme = _T("gtk"); - #elif defined(__WXMGL__) + #elif defined(__WXX11__) nameDefTheme = _T("win32"); - #elif defined(__WXPM__) + #else nameDefTheme = _T("win32"); #endif } - ms_theme = Create(nameDefTheme); + wxTheme *theme = Create(nameDefTheme); // 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 - if ( !ms_theme ) + if ( !theme ) { 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; + + 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; }