diff options
author | Ger Hean <gerhean@live.com> | 2022-01-03 17:08:03 +0800 |
---|---|---|
committer | Ger Hean <gerhean@live.com> | 2022-01-12 01:34:04 +0800 |
commit | 9dbe314da6d7c0df8df240a401686ea25f3ef086 (patch) | |
tree | 2fcd21fc155d175d3bc1eed5654497621e328077 | |
parent | b6bdbd2650f48a1c98040317a857786680a6f203 (diff) |
Create function focus_file_text
This function focuses the text field when saving a file
It is called when the save file dialogue is opened
-rw-r--r-- | editor/editor_file_dialog.cpp | 15 | ||||
-rw-r--r-- | editor/editor_file_dialog.h | 2 | ||||
-rw-r--r-- | scene/gui/file_dialog.cpp | 19 | ||||
-rw-r--r-- | scene/gui/file_dialog.h | 2 |
4 files changed, 26 insertions, 12 deletions
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index dee00b6678..906205aa19 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -52,6 +52,15 @@ EditorFileDialog::RegisterFunc EditorFileDialog::unregister_func = nullptr; void EditorFileDialog::popup_file_dialog() { popup_centered_clamped(Size2(1050, 700) * EDSCALE, 0.8); + _focus_file_text(); +} + +void EditorFileDialog::_focus_file_text() { + int lp = file->get_text().rfind("."); + if (lp != -1) { + file->select(0, lp); + file->grab_focus(); + } } VBoxContainer *EditorFileDialog::get_vbox() { @@ -974,11 +983,7 @@ void EditorFileDialog::set_current_file(const String &p_file) { file->set_text(p_file); update_dir(); invalidate(); - int lp = p_file.rfind("."); - if (lp != -1) { - file->select(0, lp); - file->grab_focus(); - } + _focus_file_text(); if (is_visible()) { _request_single_thumbnail(get_current_dir().plus_file(get_current_file())); diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h index b7abfe0836..16077cbfb9 100644 --- a/editor/editor_file_dialog.h +++ b/editor/editor_file_dialog.h @@ -149,6 +149,8 @@ private: void update_file_list(); void update_filters(); + void _focus_file_text(); + void _update_favorites(); void _favorite_pressed(); void _favorite_selected(int p_idx); diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index f9b6b1274d..44ef641cb8 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -42,6 +42,17 @@ FileDialog::RegisterFunc FileDialog::unregister_func = nullptr; void FileDialog::popup_file_dialog() { popup_centered_clamped(Size2i(700, 500), 0.8f); + _focus_file_text(); +} + +void FileDialog::_focus_file_text() { + int lp = file->get_text().rfind("."); + if (lp != -1) { + file->select(0, lp); + if (file->is_inside_tree() && !get_tree()->is_node_being_edited(file)) { + file->grab_focus(); + } + } } VBoxContainer *FileDialog::get_vbox() { @@ -688,13 +699,7 @@ void FileDialog::set_current_file(const String &p_file) { file->set_text(p_file); update_dir(); invalidate(); - int lp = p_file.rfind("."); - if (lp != -1) { - file->select(0, lp); - if (file->is_inside_tree() && !get_tree()->is_node_being_edited(file)) { - file->grab_focus(); - } - } + _focus_file_text(); } void FileDialog::set_current_path(const String &p_path) { diff --git a/scene/gui/file_dialog.h b/scene/gui/file_dialog.h index 782d11afe1..9f8bc02b2a 100644 --- a/scene/gui/file_dialog.h +++ b/scene/gui/file_dialog.h @@ -113,6 +113,8 @@ private: void update_file_list(); void update_filters(); + void _focus_file_text(); + void _tree_multi_selected(Object *p_object, int p_cell, bool p_selected); void _tree_selected(); |