diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8379874571..5c3f0c7188 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1784,6 +1784,9 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) { case DISPLAYLIST_NONE: break; + case DISPLAYLIST_SELECT: + menu_list_push(info->list, info->path, info->label, info->type, info->directory_ptr); + break; case DISPLAYLIST_MAIN_MENU: case DISPLAYLIST_SETTINGS: menu_list_clear(info->list); diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 58861956e7..33469dfcc1 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -30,6 +30,7 @@ extern "C" { enum { DISPLAYLIST_NONE = 0, + DISPLAYLIST_SELECT, DISPLAYLIST_MAIN_MENU, DISPLAYLIST_GENERIC, DISPLAYLIST_SETTINGS, diff --git a/menu/menu_entries_cbs_select.c b/menu/menu_entries_cbs_select.c index 7e7f7a14a2..7872b6efbd 100644 --- a/menu/menu_entries_cbs_select.c +++ b/menu/menu_entries_cbs_select.c @@ -19,12 +19,15 @@ static int action_select_default(unsigned type, const char *label, unsigned action) { + menu_displaylist_info_t info = {0}; menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return 0; - menu_list_push(menu->menu_list->menu_stack, "", "info_screen", - 0, menu->navigation.selection_ptr); - return 0; + info.list = menu->menu_list->menu_stack; + strlcpy(info.label, "info_screen", sizeof(info.label)); + info.directory_ptr = menu->navigation.selection_ptr; + + return menu_displaylist_push_list(&info, DISPLAYLIST_SELECT); } void menu_entries_cbs_init_bind_select(menu_file_list_cbs_t *cbs,