When changing resolutions, SwitchThemeAndLanguage was being called after clearing all subscribes but STAL wasn't reloading them because nothing had changed. Reload them explicitly if the theme doesn't change.
I'm not sure what the rationale behind taking this code path for changing the resolution as it seems to have nothing to do with the theme.
This commit is contained in:
@@ -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. */
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -41,7 +41,8 @@ public:
|
||||
RString GetThemeDisplayName( const RString &sThemeName );
|
||||
void GetLanguages( vector<RString>& 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(); };
|
||||
|
||||
Reference in New Issue
Block a user