diff --git a/stepmania/src/GameLoop.cpp b/stepmania/src/GameLoop.cpp index 7a2912fc63..608f2b128f 100644 --- a/stepmania/src/GameLoop.cpp +++ b/stepmania/src/GameLoop.cpp @@ -135,7 +135,8 @@ namespace /* In case the previous theme overloaded class bindings, reinitialize them. */ LUA->RegisterTypes(); - THEME->SwitchThemeAndLanguage( g_sNewTheme, THEME->GetCurLanguage(), PREFSMAN->m_bPseudoLocalize ); + if( !THEME->SwitchThemeAndLanguage( g_sNewTheme, THEME->GetCurLanguage(), PREFSMAN->m_bPseudoLocalize ) ) + THEME->ReloadSubscribers(); PREFSMAN->m_sTheme.Set( g_sNewTheme ); /* Apply the new window title, icon and aspect ratio. */ diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 58346f1e97..77aa2efe28 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -345,7 +345,7 @@ RString ThemeManager::GetDefaultLanguage() return sLangCode; } -void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RString &sLanguage_, bool bPseudoLocalize ) +bool ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RString &sLanguage_, bool bPseudoLocalize ) { RString sThemeName = sThemeName_; RString sLanguage = sLanguage_; @@ -367,7 +367,7 @@ void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RSt bool bNothingChanging = sThemeName == m_sCurThemeName && sLanguage == m_sCurLanguage && m_bPseudoLocalize == bPseudoLocalize; if( bNothingChanging ) - return; + return false; m_bPseudoLocalize = bPseudoLocalize; @@ -397,6 +397,7 @@ void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RSt LocalizedString::RegisterLocalizer( LocalizedStringImplThemeMetric::Create ); ReloadSubscribers(); + return true; } void ThemeManager::ReloadSubscribers() diff --git a/stepmania/src/ThemeManager.h b/stepmania/src/ThemeManager.h index dcc91aff4e..55523562ab 100644 --- a/stepmania/src/ThemeManager.h +++ b/stepmania/src/ThemeManager.h @@ -41,7 +41,8 @@ public: RString GetThemeDisplayName( const RString &sThemeName ); void GetLanguages( vector& AddTo ); bool DoesLanguageExist( const RString &sLanguage ); - void SwitchThemeAndLanguage( const RString &sThemeName, const RString &sLanguage, bool bPseudoLocalize ); + // Return false if nothing changed. + bool SwitchThemeAndLanguage( const RString &sThemeName, const RString &sLanguage, bool bPseudoLocalize ); void UpdateLuaGlobals(); RString GetCurThemeName() const { return m_sCurThemeName; }; bool IsThemeLoaded() const { return !m_sCurThemeName.empty(); };