Show playlist entry as 'Quick Menu' header title (#14350)

This commit is contained in:
sonninnos 2022-08-25 05:41:14 +03:00 committed by GitHub
parent e45958b25a
commit 8fd0961c9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 13 deletions

View File

@ -10483,11 +10483,15 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
static void ozone_set_header(ozone_handle_t *ozone) static void ozone_set_header(ozone_handle_t *ozone)
{ {
if (ozone->categories_selection_ptr <= ozone->system_tab_end) if (ozone->categories_selection_ptr <= ozone->system_tab_end ||
(ozone->is_quick_menu && !menu_is_running_quick_menu()) ||
ozone->depth > 1)
menu_entries_get_title(ozone->title, sizeof(ozone->title)); menu_entries_get_title(ozone->title, sizeof(ozone->title));
else else
{ {
ozone_node_t *node = (ozone_node_t*)file_list_get_userdata_at_offset(&ozone->horizontal_list, ozone->categories_selection_ptr - ozone->system_tab_end-1); ozone_node_t *node = (ozone_node_t*)file_list_get_userdata_at_offset(
&ozone->horizontal_list,
ozone->categories_selection_ptr - ozone->system_tab_end-1);
if (node && node->console_name) if (node && node->console_name)
{ {
@ -10600,8 +10604,6 @@ static void ozone_populate_entries(void *data,
settings = config_get_ptr(); settings = config_get_ptr();
ozone_collapse_sidebar = settings->bools.ozone_collapse_sidebar; ozone_collapse_sidebar = settings->bools.ozone_collapse_sidebar;
ozone_set_header(ozone);
if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL)) if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL))
{ {
menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL);
@ -10679,6 +10681,8 @@ static void ozone_populate_entries(void *data,
ozone->is_state_slot = string_to_unsigned(path) == MENU_ENUM_LABEL_STATE_SLOT; ozone->is_state_slot = string_to_unsigned(path) == MENU_ENUM_LABEL_STATE_SLOT;
ozone->is_playlist = ozone_is_playlist(ozone, true); ozone->is_playlist = ozone_is_playlist(ozone, true);
ozone_set_header(ozone);
if (was_db_manager_list) if (was_db_manager_list)
{ {
ozone->is_db_manager_list = true; ozone->is_db_manager_list = true;

View File

@ -1101,7 +1101,8 @@ static char* xmb_path_dynamic_wallpaper(xmb_handle_t *xmb)
unsigned depth = (unsigned)xmb_list_get_size(xmb, MENU_LIST_PLAIN); unsigned depth = (unsigned)xmb_list_get_size(xmb, MENU_LIST_PLAIN);
/* Do not update wallpaper in "Load Content" playlists */ /* Do not update wallpaper in "Load Content" playlists */
if (xmb->categories_selection_ptr == 0 && depth > 4) if ((xmb->categories_selection_ptr == 0 && depth > 4) ||
(xmb->categories_selection_ptr > xmb->system_tab_end && depth > 1))
return strdup(xmb->bg_file_path); return strdup(xmb->bg_file_path);
if (tmp) if (tmp)
@ -1963,7 +1964,9 @@ static void xmb_list_switch_new(xmb_handle_t *xmb,
static void xmb_set_title(xmb_handle_t *xmb) static void xmb_set_title(xmb_handle_t *xmb)
{ {
if (xmb->categories_selection_ptr <= xmb->system_tab_end) if (xmb->categories_selection_ptr <= xmb->system_tab_end ||
(xmb->is_quick_menu && !menu_is_running_quick_menu()) ||
xmb->depth > 1)
menu_entries_get_title(xmb->title_name, sizeof(xmb->title_name)); menu_entries_get_title(xmb->title_name, sizeof(xmb->title_name));
else else
{ {
@ -2592,10 +2595,6 @@ static void xmb_populate_entries(void *data,
if (settings->bools.menu_content_show_video) if (settings->bools.menu_content_show_video)
xmb->playlist_collection_offset++; xmb->playlist_collection_offset++;
xmb_set_title(xmb);
if (menu_dynamic_wallpaper_enable)
xmb_update_dynamic_wallpaper(xmb);
if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL)) if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL))
{ {
xmb_selection_pointer_changed(xmb, false); xmb_selection_pointer_changed(xmb, false);
@ -2608,6 +2607,10 @@ static void xmb_populate_entries(void *data,
else else
xmb_list_open(xmb); xmb_list_open(xmb);
xmb_set_title(xmb);
if (menu_dynamic_wallpaper_enable)
xmb_update_dynamic_wallpaper(xmb);
/* Determine whether to show entry index */ /* Determine whether to show entry index */
/* Update list size & entry index texts */ /* Update list size & entry index texts */
if ((xmb->entry_idx_enabled = show_entry_idx && xmb->is_playlist)) if ((xmb->entry_idx_enabled = show_entry_idx && xmb->is_playlist))
@ -6808,7 +6811,7 @@ static void xmb_context_reset_internal(xmb_handle_t *xmb,
APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_BG); APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_BG);
/* Do not reset wallpaper in "Load Content" playlists. */ /* Do not reset wallpaper in "Load Content" playlists. */
if (!string_is_empty(bg_file_path) && xmb->depth < 4) if (!string_is_empty(bg_file_path) && xmb->depth < 2)
{ {
if (!string_is_empty(xmb->bg_file_path)) if (!string_is_empty(xmb->bg_file_path))
free(xmb->bg_file_path); free(xmb->bg_file_path);

View File

@ -1094,7 +1094,7 @@ int menu_entries_get_title(char *s, size_t len)
if (cbs && cbs->action_get_title) if (cbs && cbs->action_get_title)
{ {
int ret; int ret = 0;
if (!string_is_empty(cbs->action_title_cache)) if (!string_is_empty(cbs->action_title_cache))
{ {
strlcpy(s, cbs->action_title_cache, len); strlcpy(s, cbs->action_title_cache, len);
@ -1102,7 +1102,26 @@ int menu_entries_get_title(char *s, size_t len)
} }
file_list_get_last(MENU_LIST_GET(menu_st->entries.list, 0), file_list_get_last(MENU_LIST_GET(menu_st->entries.list, 0),
&path, &label, &menu_type, NULL); &path, &label, &menu_type, NULL);
ret = cbs->action_get_title(path, label, menu_type, s, len);
/* Show playlist entry instead of "Quick Menu" */
if (string_is_equal(label, "deferred_rpl_entry_actions"))
{
const struct playlist_entry *entry = NULL;
playlist_t *playlist = playlist_get_cached();
if (playlist)
{
menu_handle_t *menu = menu_state_get_ptr()->driver_data;
playlist_get_index(playlist, menu->rpl_entry_selection_ptr, &entry);
if (entry)
strlcpy(s,
!string_is_empty(entry->label) ? entry->label : entry->path,
len);
}
}
else
ret = cbs->action_get_title(path, label, menu_type, s, len);
if (ret == 1) if (ret == 1)
strlcpy(cbs->action_title_cache, s, sizeof(cbs->action_title_cache)); strlcpy(cbs->action_title_cache, s, sizeof(cbs->action_title_cache));
return ret; return ret;