diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index 93e2da6ff3..c5e88247bf 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -185,12 +185,7 @@ static int menu_setting_ok_toggle(unsigned type, if (cbs && cbs->action_ok) return cbs->action_ok(dir, label, type, driver.menu->selection_ptr); - if ( - menu_common_type_is(label, type) == MENU_SETTINGS || - !strcmp(label, "core_list") || - !strcmp(label, "configurations") || - !strcmp(label, "disk_image_append") - ) + if (menu_common_type_is(label, type) == MENU_SETTINGS) { menu_entries_push(driver.menu->menu_stack, dir ? dir : label, label, type, diff --git a/frontend/menu/menu_entries_cbs.c b/frontend/menu/menu_entries_cbs.c index 8a174ebe9f..79ead26d63 100644 --- a/frontend/menu/menu_entries_cbs.c +++ b/frontend/menu/menu_entries_cbs.c @@ -521,6 +521,48 @@ static int action_ok_custom_viewport(const char *path, return 0; } +static int action_ok_core_list(const char *path, + const char *label, unsigned type, size_t index) +{ + const char *dir = g_settings.libretro_directory; + + if (!driver.menu) + return -1; + + menu_entries_push(driver.menu->menu_stack, + dir, label, type, + driver.menu->selection_ptr); + + return 0; +} + +static int action_ok_disk_image_append_list(const char *path, + const char *label, unsigned type, size_t index) +{ + const char *dir = g_settings.menu_content_directory; + + if (!driver.menu) + return -1; + + menu_entries_push(driver.menu->menu_stack, + dir, label, type, + driver.menu->selection_ptr); + return 0; +} + +static int action_ok_configurations_list(const char *path, + const char *label, unsigned type, size_t index) +{ + const char *dir = g_settings.menu_config_directory; + if (!driver.menu) + return -1; + + menu_entries_push(driver.menu->menu_stack, + dir ? dir : label, label, type, + driver.menu->selection_ptr); + return 0; +} + /* Bind the OK callback function */ static int menu_entries_cbs_init_bind_ok(menu_file_list_cbs_t *cbs, @@ -627,6 +669,12 @@ static void menu_entries_cbs_init_bind_ok_toggle(menu_file_list_cbs_t *cbs, cbs->action_ok = action_ok_shader_apply_changes; else if (!strcmp(label, "video_shader_preset_save_as")) cbs->action_ok = action_ok_shader_preset_save_as; + else if (!strcmp(label, "core_list")) + cbs->action_ok = action_ok_core_list; + else if (!strcmp(label, "disk_image_append")) + cbs->action_ok = action_ok_disk_image_append_list; + else if (!strcmp(label, "configurations")) + cbs->action_ok = action_ok_configurations_list; } void menu_entries_cbs_init(void *data,