Clean up FindInFiles code

This commit is contained in:
kit
2025-11-21 21:33:43 -05:00
parent 9495deaf75
commit 67e93e735f
4 changed files with 870 additions and 881 deletions
+11 -43
View File
@@ -48,7 +48,6 @@
#include "editor/debugger/script_editor_debugger.h"
#include "editor/doc/editor_help.h"
#include "editor/doc/editor_help_search.h"
#include "editor/docks/editor_dock_manager.h"
#include "editor/docks/filesystem_dock.h"
#include "editor/docks/inspector_dock.h"
#include "editor/docks/signals_dock.h"
@@ -1103,7 +1102,7 @@ void ScriptEditor::_menu_option(int p_option) {
open_find_in_files_dialog("");
} break;
case REPLACE_IN_FILES: {
_on_replace_in_files_requested("");
open_find_in_files_dialog("", true);
} break;
case SEARCH_HELP: {
help_search_dialog->popup_dialog();
@@ -2349,8 +2348,8 @@ bool ScriptEditor::edit(const Ref<Resource> &p_resource, int p_line, int p_col,
teb->connect("go_to_help", callable_mp(this, &ScriptEditor::_help_class_goto));
teb->connect("request_save_history", callable_mp(this, &ScriptEditor::_save_history));
teb->connect("request_save_previous_state", callable_mp(this, &ScriptEditor::_save_previous_state));
teb->connect("search_in_files_requested", callable_mp(this, &ScriptEditor::open_find_in_files_dialog));
teb->connect("replace_in_files_requested", callable_mp(this, &ScriptEditor::_on_replace_in_files_requested));
teb->connect("search_in_files_requested", callable_mp(this, &ScriptEditor::open_find_in_files_dialog).bind(false));
teb->connect("replace_in_files_requested", callable_mp(this, &ScriptEditor::open_find_in_files_dialog).bind(true));
teb->connect("go_to_method", callable_mp(this, &ScriptEditor::script_goto_method));
if (script_editor_cache->has_section(p_resource->get_path())) {
@@ -2603,10 +2602,8 @@ void ScriptEditor::_auto_format_text(ScriptEditorBase *p_seb) {
}
}
void ScriptEditor::open_find_in_files_dialog(const String &text) {
find_in_files_dialog->set_find_in_files_mode(FindInFilesDialog::SEARCH_MODE);
find_in_files_dialog->set_search_text(text);
find_in_files_dialog->popup_centered();
void ScriptEditor::open_find_in_files_dialog(const String &p_initial_text, bool p_replace) {
find_in_files->open_dialog(p_initial_text, p_replace);
}
void ScriptEditor::open_script_create_dialog(const String &p_base_name, const String &p_base_path) {
@@ -3661,13 +3658,6 @@ void ScriptEditor::_script_changed() {
SignalsDock::get_singleton()->update_lists();
}
void ScriptEditor::_on_replace_in_files_requested(const String &text) {
find_in_files_dialog->set_find_in_files_mode(FindInFilesDialog::REPLACE_MODE);
find_in_files_dialog->set_search_text(text);
find_in_files_dialog->set_replace_text("");
find_in_files_dialog->popup_centered();
}
void ScriptEditor::_on_find_in_files_result_selected(const String &fpath, int line_number, int begin, int end) {
if (ResourceLoader::exists(fpath)) {
Ref<Resource> res = ResourceLoader::load(fpath);
@@ -3754,26 +3744,7 @@ void ScriptEditor::_on_find_in_files_result_selected(const String &fpath, int li
}
}
void ScriptEditor::_start_find_in_files(bool with_replace) {
FindInFilesPanel *panel = find_in_files->get_panel_for_results(with_replace ? TTR("Replace:") + " " + find_in_files_dialog->get_search_text() : TTR("Find:") + " " + find_in_files_dialog->get_search_text());
FindInFiles *f = panel->get_finder();
f->set_search_text(find_in_files_dialog->get_search_text());
f->set_match_case(find_in_files_dialog->is_match_case());
f->set_whole_words(find_in_files_dialog->is_whole_words());
f->set_folder(find_in_files_dialog->get_folder());
f->set_filter(find_in_files_dialog->get_filter());
f->set_includes(find_in_files_dialog->get_includes());
f->set_excludes(find_in_files_dialog->get_excludes());
panel->set_with_replace(with_replace);
panel->set_replace_text(find_in_files_dialog->get_replace_text());
panel->start_search();
find_in_files->make_visible();
}
void ScriptEditor::_on_find_in_files_modified_files(const PackedStringArray &paths) {
void ScriptEditor::_on_find_in_files_modified_files() {
_test_script_times_on_disk();
_update_modified_scripts_for_external_editor();
}
@@ -4184,14 +4155,7 @@ ScriptEditor::ScriptEditor(WindowWrapper *p_wrapper) {
add_child(help_search_dialog);
help_search_dialog->connect("go_to_help", callable_mp(this, &ScriptEditor::_help_class_goto));
find_in_files_dialog = memnew(FindInFilesDialog);
find_in_files_dialog->connect(FindInFilesDialog::SIGNAL_FIND_REQUESTED, callable_mp(this, &ScriptEditor::_start_find_in_files).bind(false));
find_in_files_dialog->connect(FindInFilesDialog::SIGNAL_REPLACE_REQUESTED, callable_mp(this, &ScriptEditor::_start_find_in_files).bind(true));
add_child(find_in_files_dialog);
find_in_files = memnew(FindInFilesContainer);
EditorDockManager::get_singleton()->add_dock(find_in_files);
find_in_files->close();
find_in_files = memnew(FindInFiles);
find_in_files->connect("result_selected", callable_mp(this, &ScriptEditor::_on_find_in_files_result_selected));
find_in_files->connect("files_modified", callable_mp(this, &ScriptEditor::_on_find_in_files_modified_files));
@@ -4217,6 +4181,10 @@ ScriptEditor::ScriptEditor(WindowWrapper *p_wrapper) {
_update_online_doc();
}
ScriptEditor::~ScriptEditor() {
memdelete(find_in_files);
}
void ScriptEditorPlugin::_focus_another_editor() {
if (window_wrapper->get_window_enabled()) {
ERR_FAIL_COND(last_editor.is_empty());