Hide Search Results by default. Show it on first search and push it at the end. Add a close button to hide it back. Also switch to Script Editor if a searched line is clicked.

This commit is contained in:
AeioMuch 2024-02-25 15:40:39 +01:00
parent fe01776f05
commit 5cf6f3c779
4 changed files with 31 additions and 12 deletions

View file

@ -566,6 +566,7 @@ void FindInFilesDialog::_bind_methods() {
//-----------------------------------------------------------------------------
const char *FindInFilesPanel::SIGNAL_RESULT_SELECTED = "result_selected";
const char *FindInFilesPanel::SIGNAL_FILES_MODIFIED = "files_modified";
const char *FindInFilesPanel::SIGNAL_CLOSE_BUTTON_CLICKED = "close_button_clicked";
FindInFilesPanel::FindInFilesPanel() {
_finder = memnew(FindInFiles);
@ -611,6 +612,11 @@ FindInFilesPanel::FindInFilesPanel() {
_cancel_button->hide();
hbc->add_child(_cancel_button);
_close_button = memnew(Button);
_close_button->set_text(TTR("Close"));
_close_button->connect("pressed", callable_mp(this, &FindInFilesPanel::_on_close_button_clicked));
hbc->add_child(_close_button);
vbc->add_child(hbc);
}
@ -842,6 +848,10 @@ void FindInFilesPanel::_on_cancel_button_clicked() {
stop_search();
}
void FindInFilesPanel::_on_close_button_clicked() {
emit_signal(SNAME(SIGNAL_CLOSE_BUTTON_CLICKED));
}
void FindInFilesPanel::_on_result_selected() {
TreeItem *item = _results_display->get_selected();
HashMap<TreeItem *, Result>::Iterator E = _result_items.find(item);
@ -1009,4 +1019,6 @@ void FindInFilesPanel::_bind_methods() {
PropertyInfo(Variant::INT, "end")));
ADD_SIGNAL(MethodInfo(SIGNAL_FILES_MODIFIED, PropertyInfo(Variant::STRING, "paths")));
ADD_SIGNAL(MethodInfo(SIGNAL_CLOSE_BUTTON_CLICKED));
}

View file

@ -159,6 +159,7 @@ class FindInFilesPanel : public Control {
public:
static const char *SIGNAL_RESULT_SELECTED;
static const char *SIGNAL_FILES_MODIFIED;
static const char *SIGNAL_CLOSE_BUTTON_CLICKED;
FindInFilesPanel();
@ -180,6 +181,7 @@ private:
void _on_finished();
void _on_refresh_button_clicked();
void _on_cancel_button_clicked();
void _on_close_button_clicked();
void _on_result_selected();
void _on_item_edited();
void _on_replace_text_changed(const String &text);
@ -207,6 +209,7 @@ private:
Label *_status_label = nullptr;
Button *_refresh_button = nullptr;
Button *_cancel_button = nullptr;
Button *_close_button = nullptr;
ProgressBar *_progress_bar = nullptr;
HashMap<String, TreeItem *> _file_items;
HashMap<TreeItem *, Result> _result_items;

View file

@ -1715,18 +1715,6 @@ void ScriptEditor::_notification(int p_what) {
_test_script_times_on_disk();
_update_modified_scripts_for_external_editor();
} break;
case CanvasItem::NOTIFICATION_VISIBILITY_CHANGED: {
if (is_visible()) {
find_in_files_button->show();
} else {
if (find_in_files->is_visible_in_tree()) {
EditorNode::get_bottom_panel()->hide_bottom_panel();
}
find_in_files_button->hide();
}
} break;
}
}
@ -3775,6 +3763,7 @@ void ScriptEditor::_on_find_in_files_result_selected(const String &fpath, int li
ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
if (ste) {
EditorInterface::get_singleton()->set_main_screen_editor("Script");
ste->goto_line_selection(line_number, begin, end);
}
}
@ -3789,6 +3778,7 @@ void ScriptEditor::_on_find_in_files_result_selected(const String &fpath, int li
ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
if (ste) {
EditorInterface::get_singleton()->set_main_screen_editor("Script");
ste->goto_line_selection(line_number - 1, begin, end);
}
return;
@ -3822,6 +3812,13 @@ void ScriptEditor::_start_find_in_files(bool with_replace) {
find_in_files->set_replace_text(find_in_files_dialog->get_replace_text());
find_in_files->start_search();
if (find_in_files_button->get_index() != find_in_files_button->get_parent()->get_child_count()) {
find_in_files_button->get_parent()->move_child(find_in_files_button, -1);
}
if (!find_in_files_button->is_visible()) {
find_in_files_button->show();
}
EditorNode::get_bottom_panel()->make_item_visible(find_in_files);
}
@ -3848,6 +3845,11 @@ void ScriptEditor::_set_zoom_factor(float p_zoom_factor) {
}
}
void ScriptEditor::_on_find_in_files_close_button_clicked() {
EditorNode::get_bottom_panel()->hide_bottom_panel();
find_in_files_button->hide();
}
void ScriptEditor::_window_changed(bool p_visible) {
make_floating->set_visible(!p_visible);
is_floating = p_visible;
@ -4201,6 +4203,7 @@ ScriptEditor::ScriptEditor(WindowWrapper *p_wrapper) {
find_in_files->set_custom_minimum_size(Size2(0, 200) * EDSCALE);
find_in_files->connect(FindInFilesPanel::SIGNAL_RESULT_SELECTED, callable_mp(this, &ScriptEditor::_on_find_in_files_result_selected));
find_in_files->connect(FindInFilesPanel::SIGNAL_FILES_MODIFIED, callable_mp(this, &ScriptEditor::_on_find_in_files_modified_files));
find_in_files->connect(FindInFilesPanel::SIGNAL_CLOSE_BUTTON_CLICKED, callable_mp(this, &ScriptEditor::_on_find_in_files_close_button_clicked));
find_in_files->hide();
find_in_files_button->hide();

View file

@ -496,6 +496,7 @@ class ScriptEditor : public PanelContainer {
void _on_find_in_files_result_selected(const String &fpath, int line_number, int begin, int end);
void _start_find_in_files(bool with_replace);
void _on_find_in_files_modified_files(const PackedStringArray &paths);
void _on_find_in_files_close_button_clicked();
void _set_zoom_factor(float p_zoom_factor);