diff options
Diffstat (limited to 'gui/options.cpp')
-rw-r--r-- | gui/options.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gui/options.cpp b/gui/options.cpp index b02200b47e..e497da9942 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -1281,19 +1281,20 @@ void GlobalOptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint3 Common::String theme = browser.getSelected(); // FIXME: Actually, any changes (including the theme change) should // only become active *after* the options dialog has closed. - Common::String charset = TransMan.getCurrentCharset(); + Common::String lang = TransMan.getCurrentLanguage(); + Common::String oldTheme = g_gui.theme()->getThemeId(); if (g_gui.loadNewTheme(theme)) { - _curTheme->setLabel(g_gui.theme()->getThemeName()); - ConfMan.set("gui_theme", theme); // If the charset has changed, it means the font were not found for the // new theme. Since for the moment we do not support change of translation // language without restarting, we let the user know about this. - if (charset != TransMan.getCurrentCharset()) { - MessageDialog error( - "The theme you selected does not support your current language. You need to close " - "ScummVM and when you start it again it will be using this new theme and english language." - ); + if (lang != TransMan.getCurrentLanguage()) { + TransMan.setLanguage(lang.c_str()); + g_gui.loadNewTheme(oldTheme); + MessageDialog error(_("The theme you selected does not support your current language. If you want to use this theme you need to switch to another language first.")); error.runModal(); + } else { + _curTheme->setLabel(g_gui.theme()->getThemeName()); + ConfMan.set("gui_theme", theme); } } draw(); |