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. */
|
/* In case the previous theme overloaded class bindings, reinitialize them. */
|
||||||
LUA->RegisterTypes();
|
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 );
|
PREFSMAN->m_sTheme.Set( g_sNewTheme );
|
||||||
|
|
||||||
/* Apply the new window title, icon and aspect ratio. */
|
/* Apply the new window title, icon and aspect ratio. */
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ RString ThemeManager::GetDefaultLanguage()
|
|||||||
return sLangCode;
|
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 sThemeName = sThemeName_;
|
||||||
RString sLanguage = sLanguage_;
|
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;
|
bool bNothingChanging = sThemeName == m_sCurThemeName && sLanguage == m_sCurLanguage && m_bPseudoLocalize == bPseudoLocalize;
|
||||||
if( bNothingChanging )
|
if( bNothingChanging )
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
m_bPseudoLocalize = bPseudoLocalize;
|
m_bPseudoLocalize = bPseudoLocalize;
|
||||||
|
|
||||||
@@ -397,6 +397,7 @@ void ThemeManager::SwitchThemeAndLanguage( const RString &sThemeName_, const RSt
|
|||||||
LocalizedString::RegisterLocalizer( LocalizedStringImplThemeMetric::Create );
|
LocalizedString::RegisterLocalizer( LocalizedStringImplThemeMetric::Create );
|
||||||
|
|
||||||
ReloadSubscribers();
|
ReloadSubscribers();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThemeManager::ReloadSubscribers()
|
void ThemeManager::ReloadSubscribers()
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ public:
|
|||||||
RString GetThemeDisplayName( const RString &sThemeName );
|
RString GetThemeDisplayName( const RString &sThemeName );
|
||||||
void GetLanguages( vector<RString>& AddTo );
|
void GetLanguages( vector<RString>& AddTo );
|
||||||
bool DoesLanguageExist( const RString &sLanguage );
|
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();
|
void UpdateLuaGlobals();
|
||||||
RString GetCurThemeName() const { return m_sCurThemeName; };
|
RString GetCurThemeName() const { return m_sCurThemeName; };
|
||||||
bool IsThemeLoaded() const { return !m_sCurThemeName.empty(); };
|
bool IsThemeLoaded() const { return !m_sCurThemeName.empty(); };
|
||||||
|
|||||||
Reference in New Issue
Block a user