diff options
| author | Mika Viskari <miv391@gmail.com> | 2024-03-02 17:21:15 +0200 |
|---|---|---|
| committer | Mika Viskari <miv391@gmail.com> | 2024-03-08 17:43:31 +0200 |
| commit | bfd17009711ee655c673c191fec1724c67105311 (patch) | |
| tree | fe1c8bb60518bc7c08311a6d0296d01af607d548 | |
| parent | f2045ba822bff7d34964901393581a3117c394a9 (diff) | |
| download | redot-engine-bfd17009711ee655c673c191fec1724c67105311.tar.gz | |
Remember search text in Find/Replace in Files dialog
| -rw-r--r-- | editor/find_in_files.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp index 6d690cf31b..965cb39df3 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -398,8 +398,24 @@ FindInFilesDialog::FindInFilesDialog() { } void FindInFilesDialog::set_search_text(const String &text) { - _search_text_line_edit->set_text(text); - _on_search_text_modified(text); + if (_mode == SEARCH_MODE) { + if (!text.is_empty()) { + _search_text_line_edit->set_text(text); + _on_search_text_modified(text); + } + callable_mp((Control *)_search_text_line_edit, &Control::grab_focus).call_deferred(); + _search_text_line_edit->select_all(); + } else if (_mode == REPLACE_MODE) { + if (!text.is_empty()) { + _search_text_line_edit->set_text(text); + callable_mp((Control *)_replace_text_line_edit, &Control::grab_focus).call_deferred(); + _replace_text_line_edit->select_all(); + _on_search_text_modified(text); + } else { + callable_mp((Control *)_search_text_line_edit, &Control::grab_focus).call_deferred(); + _search_text_line_edit->select_all(); + } + } } void FindInFilesDialog::set_replace_text(const String &text) { @@ -464,9 +480,6 @@ void FindInFilesDialog::_notification(int p_what) { switch (p_what) { case NOTIFICATION_VISIBILITY_CHANGED: { if (is_visible()) { - // Doesn't work more than once if not deferred... - callable_mp((Control *)_search_text_line_edit, &Control::grab_focus).call_deferred(); - _search_text_line_edit->select_all(); // Extensions might have changed in the meantime, we clean them and instance them again. for (int i = 0; i < _filters_container->get_child_count(); i++) { _filters_container->get_child(i)->queue_free(); |
