diff options
author | 2008-12-04 06:07:16 +0000 | |
---|---|---|
committer | 2008-12-04 06:07:16 +0000 | |
commit | 0309522e8737332b1b2f8b99110b1fff99b33a86 (patch) | |
tree | fef21486de75edab8b7a84b183716acad0c9a5cb /src | |
parent | 30aa31f1637428d349b5d3a4144ebb3124aa66a5 (diff) |
Re-enabled the OSD key for master volume control. All other
sliders are still only accessible via the menus.
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/ui.c | 4 | ||||
-rw-r--r-- | src/emu/uimenu.c | 37 |
2 files changed, 30 insertions, 11 deletions
diff --git a/src/emu/ui.c b/src/emu/ui.c index 75a2de98aff..f29e7168239 100644 --- a/src/emu/ui.c +++ b/src/emu/ui.c @@ -1185,8 +1185,8 @@ static UINT32 handler_ingame(running_machine *machine, UINT32 state) return ui_set_handler(ui_menu_ui_handler, 0); /* if the on-screen display isn't up and the user has toggled it, turn it on */ -// if ((machine->debug_flags & DEBUG_FLAG_ENABLED) == 0 && ui_input_pressed(machine, IPT_UI_ON_SCREEN_DISPLAY)) -// return ui_set_handler(ui_slider_ui_handler, 0); + if ((machine->debug_flags & DEBUG_FLAG_ENABLED) == 0 && ui_input_pressed(machine, IPT_UI_ON_SCREEN_DISPLAY)) + return ui_set_handler(ui_slider_ui_handler, 1); /* handle a reset request */ if (ui_input_pressed(machine, IPT_UI_RESET_MACHINE)) diff --git a/src/emu/uimenu.c b/src/emu/uimenu.c index c209d758976..da44f14d55b 100644 --- a/src/emu/uimenu.c +++ b/src/emu/uimenu.c @@ -275,7 +275,7 @@ static void menu_cheat_populate(running_machine *machine, ui_menu *menu); static void menu_memory_card(running_machine *machine, ui_menu *menu, void *parameter, void *state); static void menu_memory_card_populate(running_machine *machine, ui_menu *menu, int cardnum); static void menu_sliders(running_machine *machine, ui_menu *menu, void *parameter, void *state); -static void menu_sliders_populate(running_machine *machine, ui_menu *menu); +static void menu_sliders_populate(running_machine *machine, ui_menu *menu, int menuless_mode); static void menu_sliders_custom_render(running_machine *machine, ui_menu *menu, void *state, void *selectedref, float top, float bottom, float x1, float y1, float x2, float y2); static void menu_video_targets(running_machine *machine, ui_menu *menu, void *parameter, void *state); static void menu_video_targets_populate(running_machine *machine, ui_menu *menu); @@ -1346,10 +1346,20 @@ UINT32 ui_menu_ui_handler(running_machine *machine, UINT32 state) UINT32 ui_slider_ui_handler(running_machine *machine, UINT32 state) { - /* if we have no menus stacked up, start with the sliders menu */ - if (menu_stack == NULL) - ui_menu_stack_push(ui_menu_alloc(machine, menu_sliders, machine)); - return ui_menu_ui_handler(machine, state); + UINT32 result; + + /* if this is the first call, push the sliders menu */ + if (state) + ui_menu_stack_push(ui_menu_alloc(machine, menu_sliders, (void *)1)); + + /* handle standard menus */ + result = ui_menu_ui_handler(machine, state); + + /* if we are cancelled, pop the sliders menu */ + if (result == UI_HANDLER_CANCEL) + ui_menu_stack_pop(machine); + + return (menu_stack != NULL && menu_stack->handler == menu_sliders && menu_stack->parameter != NULL) ? 0 : UI_HANDLER_CANCEL; } @@ -2641,16 +2651,19 @@ static void menu_memory_card_populate(running_machine *machine, ui_menu *menu, i static void menu_sliders(running_machine *machine, ui_menu *menu, void *parameter, void *state) { + int menuless_mode = (parameter != NULL); const ui_menu_event *event; UINT8 *hidden = state; /* if no state, allocate some */ if (hidden == NULL) hidden = ui_menu_alloc_state(menu, sizeof(*hidden), NULL); + if (menuless_mode) + *hidden = TRUE; /* if the menu isn't built, populate now */ if (!ui_menu_populated(menu)) - menu_sliders_populate(machine, menu); + menu_sliders_populate(machine, menu, menuless_mode); /* process the menu */ event = ui_menu_process(machine, menu, UI_MENU_PROCESS_LR_REPEAT | (*hidden ? UI_MENU_PROCESS_CUSTOM_ONLY : 0)); @@ -2667,9 +2680,12 @@ static void menu_sliders(running_machine *machine, ui_menu *menu, void *paramete { /* toggle visibility */ case IPT_UI_ON_SCREEN_DISPLAY: - *hidden = !*hidden; + if (menuless_mode) + ui_menu_stack_pop(machine); + else + *hidden = !*hidden; break; - + /* decrease value */ case IPT_UI_LEFT: if (input_code_pressed(KEYCODE_LALT) || input_code_pressed(KEYCODE_RALT)) @@ -2743,7 +2759,7 @@ static void menu_sliders(running_machine *machine, ui_menu *menu, void *paramete menu -------------------------------------------------*/ -static void menu_sliders_populate(running_machine *machine, ui_menu *menu) +static void menu_sliders_populate(running_machine *machine, ui_menu *menu, int menuless_mode) { astring *tempstring = astring_alloc(); const slider_state *curslider; @@ -2758,6 +2774,9 @@ static void menu_sliders_populate(running_machine *machine, ui_menu *menu) if (curval < curslider->maxval) flags |= MENU_FLAG_RIGHT_ARROW; ui_menu_item_append(menu, curslider->description, astring_c(tempstring), flags, (void *)curslider); + + if (menuless_mode) + break; } ui_menu_set_custom_render(menu, menu_sliders_custom_render, 0.0f, 2.0f * ui_get_line_height()); |