diff --git a/editor/project_manager/project_list.cpp b/editor/project_manager/project_list.cpp index a5990b6a073..9eb1ee7a6f0 100644 --- a/editor/project_manager/project_list.cpp +++ b/editor/project_manager/project_list.cpp @@ -1176,6 +1176,22 @@ void ProjectList::select_first_visible_project() { } } +void ProjectList::deselect_all_visible_projects() { + for (int i = 0; i < _projects.size(); i++) { + if (_projects[i].control->is_visible()) { + _deselect_project_nocheck(i); + } + } +} + +void ProjectList::select_all_visible_projects() { + for (int i = 0; i < _projects.size(); i++) { + if (_projects[i].control->is_visible()) { + _select_project_nocheck(i); + } + } +} + Vector ProjectList::get_selected_projects() const { Vector items; if (_selected_project_paths.is_empty()) { diff --git a/editor/project_manager/project_list.h b/editor/project_manager/project_list.h index 3549af5c7ee..eef693596d9 100644 --- a/editor/project_manager/project_list.h +++ b/editor/project_manager/project_list.h @@ -283,6 +283,8 @@ public: void select_project(int p_index); void deselect_project(int p_index); void select_first_visible_project(); + void select_all_visible_projects(); + void deselect_all_visible_projects(); Vector get_selected_projects() const; const HashSet &get_selected_project_keys() const; int get_single_selected_index() const; diff --git a/editor/project_manager/project_manager.cpp b/editor/project_manager/project_manager.cpp index 42025f655ee..c9afb451b10 100644 --- a/editor/project_manager/project_manager.cpp +++ b/editor/project_manager/project_manager.cpp @@ -1238,6 +1238,16 @@ void ProjectManager::shortcut_input(const Ref &p_ev) { keycode_handled = false; } } break; + case Key::A: { + if (k->is_command_or_control_pressed()) { + if (k->is_shift_pressed()) { + project_list->deselect_all_visible_projects(); + } else { + project_list->select_all_visible_projects(); + } + _update_project_buttons(); + } + } break; default: { keycode_handled = false; } break;