summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2021-11-24 04:59:33 +1100
committer Vas Crabb <vas@vastheman.com>2021-11-24 04:59:33 +1100
commit2cc297a47c713dd379e585193413a5aadfe59746 (patch)
tree838e8ab37b65ff4fb1fb09231fb72daf39b44e76 /src/frontend/mame
parent5668590fcb00bd3ef01d9e061dc196c3949b0043 (diff)
frontend: Fixed another case where the system selection menu could get confused when changing filters.
Diffstat (limited to 'src/frontend/mame')
-rw-r--r--src/frontend/mame/ui/selgame.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp
index f6b5f6cb2a7..d52274a6cb9 100644
--- a/src/frontend/mame/ui/selgame.cpp
+++ b/src/frontend/mame/ui/selgame.cpp
@@ -337,8 +337,9 @@ void menu_select_game::populate(float &customtop, float &custombottom)
icon.second.texture.reset();
set_switch_image();
- int old_item_selected = -1;
+ bool have_prev_selected = false;
+ int old_item_selected = -1;
if (!isfavorite())
{
if (m_populated_favorites)
@@ -391,7 +392,8 @@ void menu_select_game::populate(float &customtop, float &custombottom)
int curitem = 0;
for (ui_system_info const &elem : m_displaylist)
{
- if (old_item_selected == -1 && elem.driver->name == reselect_last::driver())
+ have_prev_selected = have_prev_selected || (&elem == m_prev_selected);
+ if ((old_item_selected == -1) && (elem.driver->name == reselect_last::driver()))
old_item_selected = curitem;
item_append(elem.description, elem.is_clone ? FLAG_INVERT : 0, (void *)&elem);
@@ -406,8 +408,9 @@ void menu_select_game::populate(float &customtop, float &custombottom)
m_populated_favorites = true;
m_search.clear();
mame_machine_manager::instance()->favorite().apply_sorted(
- [this, &old_item_selected, curitem = 0] (ui_software_info const &info) mutable
+ [this, &have_prev_selected, &old_item_selected, curitem = 0] (ui_software_info const &info) mutable
{
+ have_prev_selected = have_prev_selected || (&info == m_prev_selected);
if (info.startempty)
{
if (old_item_selected == -1 && info.shortname == reselect_last::driver())
@@ -440,6 +443,9 @@ void menu_select_game::populate(float &customtop, float &custombottom)
item_append(_("Configure Options"), 0, (void *)(uintptr_t)CONF_OPTS);
item_append(_("Configure Machine"), 0, (void *)(uintptr_t)CONF_MACHINE);
skip_main_items = 3;
+
+ if (m_prev_selected && !have_prev_selected)
+ m_prev_selected = item(0).ref();
}
else
{