diff options
author | Thierry Crozat | 2017-03-09 22:27:45 +0000 |
---|---|---|
committer | GitHub | 2017-03-09 22:27:45 +0000 |
commit | 8726792ae6cb3db94de9302bb9f41e808fdcdf7f (patch) | |
tree | 3b47778a37559d584d31c6ef50a4991e75633e94 | |
parent | 0c5ad902dc298e0c5a1442a9c9ecc0adde62114c (diff) | |
parent | f39412fcec6ae9310b0587df6b4a5e6a5b5ab427 (diff) | |
download | scummvm-rg350-8726792ae6cb3db94de9302bb9f41e808fdcdf7f.tar.gz scummvm-rg350-8726792ae6cb3db94de9302bb9f41e808fdcdf7f.tar.bz2 scummvm-rg350-8726792ae6cb3db94de9302bb9f41e808fdcdf7f.zip |
Merge pull request #919 from Joefish/master
GUI: Fix for #9711
-rw-r--r-- | gui/ThemeEngine.cpp | 31 | ||||
-rw-r--r-- | gui/options.cpp | 36 |
2 files changed, 40 insertions, 27 deletions
diff --git a/gui/ThemeEngine.cpp b/gui/ThemeEngine.cpp index 8e04b35f45..c27d36d07e 100644 --- a/gui/ThemeEngine.cpp +++ b/gui/ThemeEngine.cpp @@ -2420,19 +2420,32 @@ Common::String ThemeEngine::getThemeId(const Common::String &filename) { return "builtin"; Common::FSNode node(filename); - if (!node.exists()) - return "builtin"; + if (node.exists()) { + if (node.getName().matchString("*.zip", true)) { + Common::String id = node.getName(); - if (node.getName().matchString("*.zip", true)) { - Common::String id = node.getName(); + for (int i = 0; i < 4; ++i) + id.deleteLastChar(); - for (int i = 0; i < 4; ++i) - id.deleteLastChar(); + return id; + } else { + return node.getName(); + } + } - return id; - } else { - return node.getName(); + // FIXME: + // A very ugly hack to map a id to a filename, this will generate + // a complete theme list, thus it is slower than it could be. + // But it is the easiest solution for now. + Common::List<ThemeDescriptor> list; + listUsableThemes(list); + + for (Common::List<ThemeDescriptor>::const_iterator i = list.begin(); i != list.end(); ++i) { + if (filename.equalsIgnoreCase(i->filename)) + return i->id; } + + return "builtin"; } void ThemeEngine::showCursor() { diff --git a/gui/options.cpp b/gui/options.cpp index 5b62d493c4..7a22a9ba3f 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -1838,24 +1838,6 @@ void GlobalOptionsDialog::apply() { g_gui.loadNewTheme(g_gui.theme()->getThemeId(), selected); ConfMan.set("gui_renderer", cfg, _domain); } -#ifdef USE_TRANSLATION - Common::String oldLang = ConfMan.get("gui_language"); - int selLang = _guiLanguagePopUp->getSelectedTag(); - - ConfMan.set("gui_language", TransMan.getLangById(selLang)); - - Common::String newLang = ConfMan.get("gui_language").c_str(); - if (newLang != oldLang) { - // Activate the selected language - TransMan.setLanguage(selLang); - - // Rebuild the Launcher and Options dialogs - g_gui.loadNewTheme(g_gui.theme()->getThemeId(), ThemeEngine::kGfxDisabled, true); - rebuild(); - if (_launcher != 0) - _launcher->rebuild(); - } -#endif // USE_TRANSLATION #ifdef USE_UPDATES ConfMan.setInt("updates_check", _updatesPopUp->getSelectedTag()); @@ -1926,6 +1908,24 @@ void GlobalOptionsDialog::apply() { draw(); _newTheme.clear(); } +#ifdef USE_TRANSLATION + Common::String oldLang = ConfMan.get("gui_language"); + int selLang = _guiLanguagePopUp->getSelectedTag(); + + ConfMan.set("gui_language", TransMan.getLangById(selLang)); + + Common::String newLang = ConfMan.get("gui_language").c_str(); + if (newLang != oldLang) { + // Activate the selected language + TransMan.setLanguage(selLang); + + // Rebuild the Launcher and Options dialogs + g_gui.loadNewTheme(g_gui.theme()->getThemeId(), ThemeEngine::kGfxDisabled, true); + rebuild(); + if (_launcher != 0) + _launcher->rebuild(); + } +#endif // USE_TRANSLATION OptionsDialog::apply(); } |