diff options
author | Thierry Crozat | 2016-10-30 18:56:35 +0000 |
---|---|---|
committer | Thierry Crozat | 2016-10-30 18:56:35 +0000 |
commit | 8b5317e05d29cb2f9fad7ace7e59bda152a56418 (patch) | |
tree | c7b5299d2e27763d64141dd1228507341520213e /gui/launcher.cpp | |
parent | df3299ebb22573c936c5d6bb51e6101c13b06f19 (diff) | |
download | scummvm-rg350-8b5317e05d29cb2f9fad7ace7e59bda152a56418.tar.gz scummvm-rg350-8b5317e05d29cb2f9fad7ace7e59bda152a56418.tar.bz2 scummvm-rg350-8b5317e05d29cb2f9fad7ace7e59bda152a56418.zip |
GUI: Add possibility to rebuild the launcher dialog
Diffstat (limited to 'gui/launcher.cpp')
-rw-r--r-- | gui/launcher.cpp | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/gui/launcher.cpp b/gui/launcher.cpp index cf9c0bf56d..f96dd17d46 100644 --- a/gui/launcher.cpp +++ b/gui/launcher.cpp @@ -99,6 +99,30 @@ LauncherDialog::LauncherDialog() _w = screenW; _h = screenH; + build(); + + GUI::GuiManager::instance()._launched = true; +} + +void LauncherDialog::selectTarget(const String &target) { + if (!target.empty()) { + int itemToSelect = 0; + StringArray::const_iterator iter; + for (iter = _domains.begin(); iter != _domains.end(); ++iter, ++itemToSelect) { + if (target == *iter) { + _list->setSelected(itemToSelect); + break; + } + } + } +} + +LauncherDialog::~LauncherDialog() { + delete _browser; + delete _loadDialog; +} + +void LauncherDialog::build() { #ifndef DISABLE_FANCY_THEMES _logo = 0; if (g_gui.xmlEval()->getVar("Globals.ShowLauncherLogo") == 1 && g_gui.theme()->supportsImages()) { @@ -174,28 +198,25 @@ LauncherDialog::LauncherDialog() // Create Load dialog _loadDialog = new SaveLoadChooser(_("Load game:"), _("Load"), false); - - GUI::GuiManager::instance()._launched = true; } -void LauncherDialog::selectTarget(const String &target) { - if (!target.empty()) { - int itemToSelect = 0; - StringArray::const_iterator iter; - for (iter = _domains.begin(); iter != _domains.end(); ++iter, ++itemToSelect) { - if (target == *iter) { - _list->setSelected(itemToSelect); - break; - } - } +void LauncherDialog::clean() { + while (_firstWidget) { + Widget* w = _firstWidget; + removeWidget(w); + delete w; } -} - -LauncherDialog::~LauncherDialog() { delete _browser; delete _loadDialog; } +void LauncherDialog::rebuild() { + clean(); + build(); + reflowLayout(); + setFocusWidget(_firstWidget); +} + void LauncherDialog::open() { // Clear the active domain, in case we return to the dialog from a // failure to launch a game. Otherwise, pressing ESC will attempt to |