Merge pull request #35260 from Calinou/project-manager-enter-open-first
Select the first project when searching in the project manager
This commit is contained in:
commit
1ceba5a653
@ -1037,6 +1037,7 @@ public:
|
||||
void sort_projects();
|
||||
int get_project_count() const;
|
||||
void select_project(int p_index);
|
||||
void select_first_visible_project();
|
||||
void erase_selected_projects();
|
||||
Vector<Item> get_selected_projects() const;
|
||||
const Set<String> &get_selected_project_keys() const;
|
||||
@ -1629,6 +1630,23 @@ void ProjectList::select_project(int p_index) {
|
||||
toggle_select(p_index);
|
||||
}
|
||||
|
||||
void ProjectList::select_first_visible_project() {
|
||||
bool found = false;
|
||||
|
||||
for (int i = 0; i < _projects.size(); i++) {
|
||||
if (_projects[i].control->is_visible()) {
|
||||
select_project(i);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
// Deselect all projects if there are no visible projects in the list.
|
||||
_selected_project_keys.clear();
|
||||
}
|
||||
}
|
||||
|
||||
inline void sort(int &a, int &b) {
|
||||
if (a > b) {
|
||||
int temp = a;
|
||||
@ -2347,6 +2365,12 @@ void ProjectManager::_on_order_option_changed() {
|
||||
void ProjectManager::_on_filter_option_changed() {
|
||||
_project_list->set_search_term(project_filter->get_search_term());
|
||||
_project_list->sort_projects();
|
||||
|
||||
// Select the first visible project in the list.
|
||||
// This makes it possible to open a project without ever touching the mouse,
|
||||
// as the search field is automatically focused on startup.
|
||||
_project_list->select_first_visible_project();
|
||||
_update_project_buttons();
|
||||
}
|
||||
|
||||
void ProjectManager::_bind_methods() {
|
||||
|
Loading…
Reference in New Issue
Block a user