diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ff6f40168d..0cb568a03a 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -19,9 +19,9 @@ #include "menu_displaylist.h" #include "menu_navigation.h" - int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) { + int ret = 0; menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); @@ -36,12 +36,16 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) menu_list_push(menu_list->menu_stack, info->path, info->label, info->type, info->flags); menu_navigation_clear(nav, true); - menu_entries_push_list(menu, info->list, + ret = menu_entries_push_list(menu, info->list, + info->path, info->label, info->type, info->flags); + break; + case DISPLAYLIST_SETTINGS: + ret = menu_entries_push_list(menu, info->list, info->path, info->label, info->type, info->flags); break; } - return 0; + return ret; } int menu_displaylist_deferred_push(menu_displaylist_info_t *info) diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index b3cc652b0d..a5ad35beba 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -28,6 +28,7 @@ enum { DISPLAYLIST_NONE = 0, DISPLAYLIST_MAIN_MENU, + DISPLAYLIST_SETTINGS, }; typedef struct menu_displaylist_info diff --git a/menu/menu_entries_cbs_deferred_push.c b/menu/menu_entries_cbs_deferred_push.c index c6b02b695a..e199dbef24 100644 --- a/menu/menu_entries_cbs_deferred_push.c +++ b/menu/menu_entries_cbs_deferred_push.c @@ -1550,12 +1550,19 @@ static int deferred_push_settings_subgroup(void *data, void *userdata, static int deferred_push_category(void *data, void *userdata, const char *path, const char *label, unsigned type) { + menu_displaylist_info_t info = {0}; menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return -1; - return menu_entries_push_list(menu, (file_list_t*)data, - path, label, type, SL_FLAG_ALL_SETTINGS); + + info.list = (file_list_t*)data; + info.type = type; + info.flags = SL_FLAG_ALL_SETTINGS; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + + return menu_displaylist_push_list(&info, DISPLAYLIST_SETTINGS); } static int deferred_push_video_options(void *data, void *userdata,