diff --git a/gui/launcher.cpp b/gui/launcher.cpp index a97ebc88d16..f72bdfa795e 100644 --- a/gui/launcher.cpp +++ b/gui/launcher.cpp @@ -443,16 +443,7 @@ LauncherDialog::LauncherDialog(GameDetector &detector) // Restore last selection String last = ConfMan.get(String("lastselectedgame"), ConfigManager::kApplicationDomain); - if (!last.isEmpty()) { - int itemToSelect = 0; - StringList::const_iterator iter; - for (iter = _domains.begin(); iter != _domains.end(); ++iter, ++itemToSelect) { - if (last == *iter) { - _list->setSelected(itemToSelect); - break; - } - } - } + selectGame(last); // En-/Disable the buttons depending on the list selection updateButtons(); @@ -461,6 +452,19 @@ LauncherDialog::LauncherDialog(GameDetector &detector) _browser = new BrowserDialog("Select directory with game data"); } +void LauncherDialog::selectGame(const String &name) { + if (!name.isEmpty()) { + int itemToSelect = 0; + StringList::const_iterator iter; + for (iter = _domains.begin(); iter != _domains.end(); ++iter, ++itemToSelect) { + if (name == *iter) { + _list->setSelected(itemToSelect); + break; + } + } + } +} + LauncherDialog::~LauncherDialog() { delete _browser; } @@ -609,8 +613,9 @@ void LauncherDialog::addGame() { // Write config to disk ConfMan.flushToDisk(); - // Update the ListWidget and force a redraw + // Update the ListWidget, select the new item, and force a redraw updateListing(); + selectGame(domain); draw(); } else { // User aborted, remove the the new domain again diff --git a/gui/launcher.h b/gui/launcher.h index a0ad898b5b5..ba6cfa52107 100644 --- a/gui/launcher.h +++ b/gui/launcher.h @@ -56,6 +56,8 @@ protected: virtual void addGame(); void removeGame(int item); void editGame(int item); + + void selectGame(const String &name); }; } // End of namespace GUI