diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 8eed572450..d1dbab3537 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -1209,6 +1209,7 @@ static int menu_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cbs, case MENU_SETTING_GROUP: case MENU_SETTINGS_CORE_INFO_NONE: case MENU_SETTING_ACTION_FAVORITES_DIR: + case MENU_SETTING_ACTION_CORE_MANAGER_OPTIONS: if ( string_ends_with_size(menu_label, "_tab", strlen(menu_label), STRLEN_CONST("_tab")) diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 0b23ed0b44..4a730ad6a9 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -1030,6 +1030,7 @@ static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs, case MENU_SETTING_GROUP: case MENU_SETTINGS_CORE_INFO_NONE: case MENU_SETTING_ACTION_FAVORITES_DIR: + case MENU_SETTING_ACTION_CORE_MANAGER_OPTIONS: if ( string_ends_with_size(menu_label, "_tab", strlen(menu_label), STRLEN_CONST("_tab")) diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 1dcf2203ed..a165d231ac 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -561,7 +561,6 @@ DEFAULT_TITLE_MACRO(action_get_online_updater_list, MENU_ENUM_LABEL_ DEFAULT_TITLE_MACRO(action_get_netplay_list, MENU_ENUM_LABEL_VALUE_NETPLAY) DEFAULT_TITLE_MACRO(action_get_online_thumbnails_updater_list, MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST) DEFAULT_TITLE_MACRO(action_get_online_pl_thumbnails_updater_list, MENU_ENUM_LABEL_VALUE_PL_THUMBNAILS_UPDATER_LIST) -DEFAULT_TITLE_MACRO(action_get_core_manager_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_LIST) DEFAULT_TITLE_MACRO(action_get_add_content_list, MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST) DEFAULT_TITLE_MACRO(action_get_configurations_list, MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST) DEFAULT_TITLE_MACRO(action_get_core_options_list, MENU_ENUM_LABEL_VALUE_CORE_OPTIONS) @@ -744,6 +743,7 @@ DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_title_deferred_images_list, MENU DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_title_deferred_music_list, MENU_ENUM_LABEL_VALUE_GOTO_MUSIC) DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_title_deferred_video_list, MENU_ENUM_LABEL_VALUE_GOTO_VIDEO) DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_updater_list, MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST) +DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_manager_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_LIST) DEFAULT_FILL_TITLE_SEARCH_FILTER_MACRO(action_get_title_video_shader_preset, MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO) DEFAULT_FILL_TITLE_SEARCH_FILTER_MACRO(action_get_title_cheat_file_load, MENU_ENUM_LABEL_VALUE_CHEAT_FILE) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 74ba54ff9d..476de4729b 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -8340,7 +8340,8 @@ static void materialui_populate_entries( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PASS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD_APPEND)) || - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY)); + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST)); if (!mui->is_file_list) mui->is_dropdown_list = string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST)) || diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 20e3ff8272..f88e3e61f2 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -860,8 +860,9 @@ static unsigned menu_displaylist_parse_core_manager_list( if (core_info_list) { - core_info_t *core_info = NULL; - size_t menu_index = 0; + menu_serch_terms_t *search_terms = menu_entries_search_get_terms(); + core_info_t *core_info = NULL; + size_t menu_index = 0; size_t i; /* Sort cores alphabetically */ @@ -875,6 +876,30 @@ static unsigned menu_displaylist_parse_core_manager_list( if (core_info) { + /* If a search is active, skip non-matching + * entries */ + if (search_terms) + { + bool entry_valid = true; + size_t j; + + for (j = 0; j < search_terms->size; j++) + { + const char *search_term = search_terms->terms[j]; + + if (!string_is_empty(search_term) && + !string_is_empty(core_info->display_name) && + !strcasestr(core_info->display_name, search_term)) + { + entry_valid = false; + break; + } + } + + if (!entry_valid) + continue; + } + if (menu_entries_append_enum(info->list, core_info->path, "", @@ -11078,6 +11103,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, * the navigation pointer if the current size is * different */ static size_t prev_count = 0; + size_t selection = menu_navigation_get_selection(); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); count = menu_displaylist_parse_core_manager_list(info, settings); @@ -11089,7 +11115,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, MENU_ENUM_LABEL_NO_ENTRIES_TO_DISPLAY, FILE_TYPE_NONE, 0, 0); - if (count != prev_count) + if ((count != prev_count) || + (selection >= count)) { info->need_refresh = true; info->need_navigation_clear = true; diff --git a/retroarch.c b/retroarch.c index 61cd65ea58..4e643c2af7 100644 --- a/retroarch.c +++ b/retroarch.c @@ -5009,7 +5009,9 @@ bool menu_driver_search_filter_enabled(const char *label, unsigned type) string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD_APPEND)) || /* > Overlays */ - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY)); + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY)) || + /* > Manage Cores */ + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST)); return filter_enabled; }