Browse Source

Merge pull request #77292 from Calinou/project-manager-add-select-all-none-shortcuts

Add Ctrl + A and Ctrl + Shift + A to (de)select all projects in project manager
Thaddeus Crews 3 weeks ago
parent
commit
09bc1ca327

+ 16 - 0
editor/project_manager/project_list.cpp

@@ -1307,6 +1307,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::Item> ProjectList::get_selected_projects() const {
 Vector<ProjectList::Item> ProjectList::get_selected_projects() const {
 	Vector<Item> items;
 	Vector<Item> items;
 	if (_selected_project_paths.is_empty()) {
 	if (_selected_project_paths.is_empty()) {

+ 2 - 0
editor/project_manager/project_list.h

@@ -309,6 +309,8 @@ public:
 	void select_project(int p_index);
 	void select_project(int p_index);
 	void deselect_project(int p_index);
 	void deselect_project(int p_index);
 	void select_first_visible_project();
 	void select_first_visible_project();
+	void select_all_visible_projects();
+	void deselect_all_visible_projects();
 	Vector<Item> get_selected_projects() const;
 	Vector<Item> get_selected_projects() const;
 	const HashSet<String> &get_selected_project_keys() const;
 	const HashSet<String> &get_selected_project_keys() const;
 	int get_single_selected_index() const;
 	int get_single_selected_index() const;

+ 10 - 0
editor/project_manager/project_manager.cpp

@@ -1248,6 +1248,16 @@ void ProjectManager::shortcut_input(const Ref<InputEvent> &p_ev) {
 					keycode_handled = false;
 					keycode_handled = false;
 				}
 				}
 			} break;
 			} 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: {
 			default: {
 				keycode_handled = false;
 				keycode_handled = false;
 			} break;
 			} break;