diff options
-rw-r--r-- | gui/options.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/gui/options.cpp b/gui/options.cpp index 29d0c6a3e1..98d8bbea76 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -847,6 +847,8 @@ void GlobalOptionsDialog::close() { GUI::ThemeEngine::GraphicsMode selected = (GUI::ThemeEngine::GraphicsMode)_rendererPopUp->getSelectedTag(); const char *cfg = GUI::ThemeEngine::findModeConfigName(selected); if (!ConfMan.get("gui_renderer").equalsIgnoreCase(cfg)) { + // FIXME: Actually, any changes (including the theme change) should + // only become active *after* the options dialog has closed. g_gui.loadNewTheme(g_gui.theme()->getThemeFileName(), selected); ConfMan.set("gui_renderer", cfg, _domain); } @@ -930,12 +932,13 @@ void GlobalOptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint3 ThemeBrowser browser; if (browser.runModal() > 0) { // User made his choice... - const Common::String &theme = browser.getSelected(); - if (!theme.equalsIgnoreCase(g_gui.theme()->getThemeFileName())) - if (g_gui.loadNewTheme(theme)) { - _curTheme->setLabel(g_gui.theme()->getThemeName()); - ConfMan.set("gui_theme", theme); - } + Common::String theme = browser.getSelected(); + // FIXME: Actually, any changes (including the theme change) should + // only become active *after* the options dialog has closed. + if (g_gui.loadNewTheme(theme)) { + _curTheme->setLabel(g_gui.theme()->getThemeName()); + ConfMan.set("gui_theme", theme); + } draw(); } break; |