aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Crozat2017-03-09 22:27:45 +0000
committerGitHub2017-03-09 22:27:45 +0000
commit8726792ae6cb3db94de9302bb9f41e808fdcdf7f (patch)
tree3b47778a37559d584d31c6ef50a4991e75633e94
parent0c5ad902dc298e0c5a1442a9c9ecc0adde62114c (diff)
parentf39412fcec6ae9310b0587df6b4a5e6a5b5ab427 (diff)
downloadscummvm-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.cpp31
-rw-r--r--gui/options.cpp36
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();
}