diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-02-06 23:35:45 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-02-06 23:35:45 +0100 |
commit | f39eb330e9d519e8b8bfe0ae3a6c7c88524265fa (patch) | |
tree | 9c7f6ce11c3c1221fa874088b7c7d90dca1d6d4d | |
parent | bea2dea15d79ee8ed3df02b181d9c324105dddd5 (diff) | |
parent | 4b1d577b5cdb5d7192d29e2e7a5450badb81dcad (diff) |
Merge pull request #72741 from KoBeWi/connect!_but_where
Improve Connect Dialog navigation
-rw-r--r-- | editor/connections_dialog.cpp | 24 | ||||
-rw-r--r-- | editor/connections_dialog.h | 2 |
2 files changed, 25 insertions, 1 deletions
diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index f4d293e9f4..20a9e633a8 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -170,6 +170,10 @@ void ConnectDialog::_tree_node_selected() { _update_ok_enabled(); } +void ConnectDialog::_focus_currently_connected() { + tree->set_selected(source); +} + void ConnectDialog::_unbind_count_changed(double p_count) { for (Control *control : bind_controls) { BaseButton *b = Object::cast_to<BaseButton>(control); @@ -577,6 +581,8 @@ void ConnectDialog::init(const ConnectionData &p_cd, const PackedStringArray &p_ void ConnectDialog::popup_dialog(const String p_for_signal) { from_signal->set_text(p_for_signal); error_label->add_theme_color_override("font_color", error_label->get_theme_color(SNAME("error_color"), SNAME("Editor"))); + filter_nodes->clear(); + if (!advanced->is_pressed()) { error_label->set_visible(!_find_first_script(get_tree()->get_edited_scene_root(), get_tree()->get_edited_scene_root())); } @@ -628,12 +634,28 @@ ConnectDialog::ConnectDialog() { tree = memnew(SceneTreeEditor(false)); tree->set_connecting_signal(true); tree->set_show_enabled_subscene(true); + tree->set_v_size_flags(Control::SIZE_FILL | Control::SIZE_EXPAND); tree->get_scene_tree()->connect("item_activated", callable_mp(this, &ConnectDialog::_item_activated)); tree->connect("node_selected", callable_mp(this, &ConnectDialog::_tree_node_selected)); tree->set_connect_to_script_mode(true); - Node *mc = vbc_left->add_margin_child(TTR("Connect to Script:"), tree, true); + HBoxContainer *hbc_filter = memnew(HBoxContainer); + + filter_nodes = memnew(LineEdit); + hbc_filter->add_child(filter_nodes); + filter_nodes->set_h_size_flags(Control::SIZE_FILL | Control::SIZE_EXPAND); + filter_nodes->set_placeholder(TTR("Filter Nodes")); + filter_nodes->set_clear_button_enabled(true); + filter_nodes->connect("text_changed", callable_mp(tree, &SceneTreeEditor::set_filter)); + + Button *focus_current = memnew(Button); + hbc_filter->add_child(focus_current); + focus_current->set_text(TTR("Go to Source")); + focus_current->connect("pressed", callable_mp(this, &ConnectDialog::_focus_currently_connected)); + + Node *mc = vbc_left->add_margin_child(TTR("Connect to Script:"), hbc_filter, false); connect_to_label = Object::cast_to<Label>(vbc_left->get_child(mc->get_index() - 1)); + vbc_left->add_child(tree); error_label = memnew(Label); error_label->set_text(TTR("Scene does not contain any script.")); diff --git a/editor/connections_dialog.h b/editor/connections_dialog.h index 277ea03cf7..e5375a3fc8 100644 --- a/editor/connections_dialog.h +++ b/editor/connections_dialog.h @@ -106,6 +106,7 @@ public: private: Label *connect_to_label = nullptr; LineEdit *from_signal = nullptr; + LineEdit *filter_nodes = nullptr; Node *source = nullptr; ConnectionData source_connection_data; StringName signal; @@ -142,6 +143,7 @@ private: void _item_activated(); void _text_submitted(const String &p_text); void _tree_node_selected(); + void _focus_currently_connected(); void _method_selected(); void _create_method_tree_items(const List<MethodInfo> &p_methods, TreeItem *p_parent_item); |