X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e4ba9eb2b7921ac0ce6512ff407e6ffb85a61ebe..dd91da4ed1e9d2ba5d3bc2fae64a8e4ea86b5d41:/src/univ/theme.cpp diff --git a/src/univ/theme.cpp b/src/univ/theme.cpp index 3982bcf728..35c540df58 100644 --- a/src/univ/theme.cpp +++ b/src/univ/theme.cpp @@ -33,6 +33,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 +66,7 @@ wxThemeInfo::wxThemeInfo(Constructor c, wxThemeInfo *info = ms_allThemes; while ( info ) { - if ( name == info->name ) + if ( name.CmpNoCase(info->name) == 0 ) { return info->ctor(); } @@ -106,22 +108,25 @@ wxThemeInfo::wxThemeInfo(Constructor c, #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; } + // Set the theme as current. + wxTheme::Set(theme); + return TRUE; } @@ -129,6 +134,16 @@ wxThemeInfo::wxThemeInfo(Constructor c, { 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; }