diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 67c21189b8..468450b4f6 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -35,6 +35,8 @@ rgui_handle_t *rgui; const menu_ctx_driver_t *menu_ctx; +static void menu_parse_and_resolve(void *data, unsigned menu_type); + static void menu_update_system_info(void *data, bool *load_no_rom) { rgui_handle_t *rgui = (rgui_handle_t*)data; @@ -1093,9 +1095,9 @@ static int menu_iterate_func(void *data, void *video_data, unsigned action) case RGUI_ACTION_RIGHT: if (rgui->selection_ptr + fast_scroll_speed < rgui->selection_buf->size) - rgui->selection_ptr += fast_scroll_speed; + menu_set_navigation(rgui, rgui->selection_ptr + fast_scroll_speed); else - rgui->selection_ptr = rgui->selection_buf->size - 1; + menu_set_navigation_last(rgui); break; case RGUI_ACTION_SCROLL_UP: @@ -1108,8 +1110,8 @@ static int menu_iterate_func(void *data, void *video_data, unsigned action) case RGUI_ACTION_CANCEL: if (rgui->menu_stack->size > 1) { - rgui->need_refresh = true; file_list_pop(rgui->menu_stack, &rgui->selection_ptr); + rgui->need_refresh = true; } break; @@ -2157,7 +2159,7 @@ void menu_populate_entries(void *data, unsigned menu_type) menu_ctx->populate_entries(rgui, menu_type); } -void menu_parse_and_resolve(void *data, unsigned menu_type) +static void menu_parse_and_resolve(void *data, unsigned menu_type) { const core_info_t *info = NULL; const char *dir; diff --git a/frontend/menu/menu_common.h b/frontend/menu/menu_common.h index 61a254f202..a7b30fe33c 100644 --- a/frontend/menu/menu_common.h +++ b/frontend/menu/menu_common.h @@ -420,8 +420,6 @@ void shader_manager_save_preset(void *data, const char *basename, bool apply); void menu_ticker_line(char *buf, size_t len, unsigned tick, const char *str, bool selected); -void menu_parse_and_resolve(void *data, unsigned menu_type); - void menu_init_core_info(void *data); void load_menu_game_prepare(void *video_data); diff --git a/frontend/menu/menu_navigation.c b/frontend/menu/menu_navigation.c index a7f63d5f8d..9bc83100d4 100644 --- a/frontend/menu/menu_navigation.c +++ b/frontend/menu/menu_navigation.c @@ -66,6 +66,15 @@ void menu_set_navigation(void *data, size_t i) #endif } +void menu_set_navigation_last(void *data) +{ + rgui_handle_t *rgui = (rgui_handle_t*)data; + rgui->selection_ptr = rgui->selection_buf->size - 1; +#ifdef HAVE_RMENU_XUI + XuiListSetCurSelVisible(m_menulist, rgui->selection_ptr); +#endif +} + void menu_descend_alphabet(void *data, size_t *ptr_out) { rgui_handle_t *rgui = (rgui_handle_t*)data; diff --git a/frontend/menu/menu_navigation.h b/frontend/menu/menu_navigation.h index 8611c35533..e2657d451a 100644 --- a/frontend/menu/menu_navigation.h +++ b/frontend/menu/menu_navigation.h @@ -21,6 +21,7 @@ void menu_clear_navigation(void *data); void menu_decrement_navigation(void *data); void menu_increment_navigation(void *data); void menu_set_navigation(void *data, size_t i); +void menu_set_navigation_last(void *data); void menu_descend_alphabet(void *data, size_t *ptr_out); void menu_ascend_alphabet(void *data, size_t *ptr_out);