From 27d5152247cf6475a5b61c06d01d85b7f3298108 Mon Sep 17 00:00:00 2001 From: sonninnos Date: Tue, 18 Jul 2023 15:14:07 +0300 Subject: [PATCH] Explore menu usability improvements --- menu/drivers/xmb.c | 26 ++++++++++++++++---------- menu/menu_explore.c | 12 ++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 6091a53b65..b0414cdd94 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1580,8 +1580,8 @@ static void xmb_selection_pointer_changed( update_thumbnails = true; } /* Database + Explore list updates */ - else if ((xmb->is_db_manager_list && depth <= 4) || - xmb->is_explore_list) + else if ((xmb->is_db_manager_list && depth <= 4) + || xmb->is_explore_list) { xmb_set_thumbnail_content(xmb, NULL); update_thumbnails = true; @@ -1828,7 +1828,7 @@ static void xmb_list_open_new(xmb_handle_t *xmb, if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) || gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)) { - if (xmb->is_playlist || xmb->is_db_manager_list) + if (xmb->is_playlist || xmb->is_db_manager_list || xmb->is_explore_list) { if (!(xmb->is_db_manager_list && xmb->depth > 4)) xmb_unload_thumbnail_textures(xmb); @@ -2204,7 +2204,7 @@ static void xmb_list_switch(xmb_handle_t *xmb) { xmb_unload_thumbnail_textures(xmb); - if (xmb->is_playlist) + if (xmb->is_playlist || xmb->is_explore_list) { xmb_set_thumbnail_content(xmb, NULL); xmb_update_thumbnail_image(xmb); @@ -2665,13 +2665,15 @@ static void xmb_populate_entries(void *data, unsigned xmb_system_tab, xmb_horizontal_type; xmb_handle_t *xmb = (xmb_handle_t*)data; settings_t *settings = config_get_ptr(); - struct menu_state *menu_st = menu_state_get_ptr(); + struct menu_state *menu_st = menu_state_get_ptr(); menu_list_t *menu_list = menu_st->entries.list; - bool menu_dynamic_wallpaper_enable = - settings ? settings->bools.menu_dynamic_wallpaper_enable : false; - bool show_entry_idx = settings ? settings->bools.playlist_show_entry_idx : false; + bool menu_dynamic_wallpaper_enable = settings + ? settings->bools.menu_dynamic_wallpaper_enable : false; + bool show_entry_idx = settings + ? settings->bools.playlist_show_entry_idx : false; bool was_db_manager_list = false; - unsigned depth = (unsigned)xmb_list_get_size(xmb, MENU_LIST_PLAIN); + static unsigned depth_prev = 0; + unsigned depth = (unsigned)xmb_list_get_size(xmb, MENU_LIST_PLAIN); if (!xmb) return; xmb_system_tab = xmb_get_system_tab(xmb, (unsigned)xmb->categories_selection_ptr); @@ -2751,8 +2753,10 @@ static void xmb_populate_entries(void *data, xmb->is_quick_menu |= menu_is_nonrunning_quick_menu() || menu_is_running_quick_menu(); if (!menu_explore_is_content_list() || xmb->is_quick_menu) xmb->is_explore_list = false; - else if (!xmb->is_quick_menu) + else if (!xmb->is_quick_menu && depth < depth_prev) xmb->skip_thumbnail_reset = true; + else + xmb->skip_thumbnail_reset = false; /* 'is_playlist' must be cleared for 'xmb_set_thumbnail_content' */ if (xmb->is_explore_list) @@ -2775,6 +2779,8 @@ static void xmb_populate_entries(void *data, else xmb_list_open(xmb); + depth_prev = depth; + xmb_set_title(xmb); if (menu_dynamic_wallpaper_enable) xmb_update_dynamic_wallpaper(xmb); diff --git a/menu/menu_explore.c b/menu/menu_explore.c index fae134f5fe..507cb01ee7 100644 --- a/menu/menu_explore.c +++ b/menu/menu_explore.c @@ -1424,6 +1424,10 @@ unsigned menu_displaylist_explore(file_list_t *list, settings_t *settings) if (!*state->view_search) { + /* Start navigation from first item */ + if (menu_st->selection_ptr < 1) + menu_st->selection_ptr = 1; + explore_menu_entry( list, state, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_EXPLORE_SEARCH_NAME), @@ -1555,6 +1559,10 @@ unsigned menu_displaylist_explore(file_list_t *list, settings_t *settings) } else if (current_type == EXPLORE_TYPE_VIEW) { + /* Start navigation from first item */ + if (menu_st->selection_ptr < 1) + menu_st->selection_ptr = 1; + /* Show a saved view */ state->show_icons = EXPLORE_ICONS_CONTENT; explore_menu_entry(list, state, @@ -1566,6 +1574,10 @@ unsigned menu_displaylist_explore(file_list_t *list, settings_t *settings) } else { + /* Start navigation from first item */ + if (menu_st->selection_ptr < 2) + menu_st->selection_ptr = 2; + /* Game list */ state->show_icons = EXPLORE_ICONS_CONTENT; explore_menu_entry(list, state,