Merge pull request #110250 from YeldhamDev/i_just_cant_keep_focused

Hide `Control` focus when given via mouse input
This commit is contained in:
Thaddeus Crews
2025-09-22 13:28:44 -05:00
53 changed files with 229 additions and 105 deletions

View File

@ -813,7 +813,7 @@ void ProjectDialog::show_dialog(bool p_reset_name) {
renderer_container->hide();
default_files_container->hide();
callable_mp((Control *)project_name, &Control::grab_focus).call_deferred();
callable_mp((Control *)project_name, &Control::grab_focus).call_deferred(false);
callable_mp(project_name, &LineEdit::select_all).call_deferred();
} else {
if (p_reset_name) {
@ -882,7 +882,7 @@ void ProjectDialog::show_dialog(bool p_reset_name) {
renderer_container->show();
default_files_container->show();
callable_mp((Control *)project_name, &Control::grab_focus).call_deferred();
callable_mp((Control *)project_name, &Control::grab_focus).call_deferred(false);
callable_mp(project_name, &LineEdit::select_all).call_deferred();
} else if (mode == MODE_INSTALL) {
set_title(TTR("Install Project:") + " " + zip_title);
@ -895,7 +895,7 @@ void ProjectDialog::show_dialog(bool p_reset_name) {
renderer_container->hide();
default_files_container->hide();
callable_mp((Control *)project_path, &Control::grab_focus).call_deferred();
callable_mp((Control *)project_path, &Control::grab_focus).call_deferred(false);
} else if (mode == MODE_DUPLICATE) {
set_title(TTRC("Duplicate Project"));
set_ok_button_text(TTRC("Duplicate"));
@ -908,7 +908,7 @@ void ProjectDialog::show_dialog(bool p_reset_name) {
edit_check_box->hide();
}
callable_mp((Control *)project_name, &Control::grab_focus).call_deferred();
callable_mp((Control *)project_name, &Control::grab_focus).call_deferred(false);
callable_mp(project_name, &LineEdit::select_all).call_deferred();
}

View File

@ -363,7 +363,8 @@ void ProjectManager::_select_main_view(int p_id) {
if (current_main_view == MAIN_VIEW_PROJECTS && search_box->is_inside_tree()) {
// Automatically grab focus when the user moves from the Templates tab
// back to the Projects tab.
search_box->grab_focus();
// Needs to be deferred, otherwise the focus outline is always drawn.
callable_mp((Control *)search_box, &Control::grab_focus).call_deferred(true);
}
// The Templates tab's search field is focused on display in the asset