From efcaebaea269e641cc314241e8cffa58158216e8 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Tue, 15 Jul 2008 11:04:30 +0000 Subject: [PATCH] Changed ui_menu_get_selection() and ui_menu_set_selection() to use itemrefs instead of indexes as per Aaron's guidance. --- src/emu/uimenu.c | 19 +++++++++++++++---- src/emu/uimenu.h | 4 ++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/emu/uimenu.c b/src/emu/uimenu.c index 31ddcb3d79b..f21f40b0b65 100644 --- a/src/emu/uimenu.c +++ b/src/emu/uimenu.c @@ -3131,9 +3131,11 @@ static void menu_render_triangle(bitmap_t *dest, const bitmap_t *source, const r of the currently selected menu item -------------------------------------------------*/ -int ui_menu_get_selection(ui_menu *menu) +void *ui_menu_get_selection(ui_menu *menu) { - return menu->selected; + return (menu->selected >= 0) && (menu->selected < menu->numitems) + ? menu->item[menu->selected].ref + : NULL; } @@ -3143,7 +3145,16 @@ int ui_menu_get_selection(ui_menu *menu) of the currently selected menu item -------------------------------------------------*/ -void ui_menu_set_selection(ui_menu *menu, int selected) +void ui_menu_set_selection(ui_menu *menu, void *selected_itemref) { - menu->selected = selected; + int i; + for (i = 0; i < menu->numitems; i++) + { + if (menu->item[i].ref == selected_itemref) + { + menu->selected = i; + return; + } + } + menu->selected = -1; } diff --git a/src/emu/uimenu.h b/src/emu/uimenu.h index 87036025dfb..cc60d7b7880 100644 --- a/src/emu/uimenu.h +++ b/src/emu/uimenu.h @@ -143,10 +143,10 @@ int ui_menu_is_force_game_select(void); /* ----- accessors ----- */ /* retrieves the index of the currently selected menu item */ -int ui_menu_get_selection(ui_menu *menu); +void *ui_menu_get_selection(ui_menu *menu); /* changes the index of the currently selected menu item */ -void ui_menu_set_selection(ui_menu *menu, int selected); +void ui_menu_set_selection(ui_menu *menu, void *selected_itemref);