Skip to content

Commit 1d4a807

Browse files
committed
Scene Dock: Simplify Filter Nodes related UI
1 parent 90659c1 commit 1d4a807

File tree

2 files changed

+18
-23
lines changed

2 files changed

+18
-23
lines changed

editor/docks/scene_tree_dock.cpp

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,11 +1729,6 @@ void SceneTreeDock::_notification(int p_what) {
17291729

17301730
filter->set_right_icon(get_editor_theme_icon(SNAME("Search")));
17311731

1732-
PopupMenu *filter_menu = filter->get_menu();
1733-
filter_menu->set_item_icon(filter_menu->get_item_idx_from_text(TTR("Filters")), get_editor_theme_icon(SNAME("Search")));
1734-
filter_menu->set_item_icon(filter_menu->get_item_index(FILTER_BY_TYPE), get_editor_theme_icon(SNAME("Node")));
1735-
filter_menu->set_item_icon(filter_menu->get_item_index(FILTER_BY_GROUP), get_editor_theme_icon(SNAME("Groups")));
1736-
17371732
// These buttons are created on READY, because reasons...
17381733
if (button_2d) {
17391734
button_2d->set_button_icon(get_editor_theme_icon(SNAME("Node2D")));
@@ -4028,9 +4023,6 @@ void SceneTreeDock::_update_tree_menu() {
40284023
PopupMenu *tree_menu = button_tree_menu->get_popup();
40294024
tree_menu->clear();
40304025

4031-
_append_filter_options_to(tree_menu);
4032-
4033-
tree_menu->add_separator();
40344026
tree_menu->add_check_item(TTR("Auto Expand to Selected"), TOOL_AUTO_EXPAND);
40354027
tree_menu->set_item_checked(-1, EDITOR_GET("docks/scene_tree/auto_expand_to_selected"));
40364028

@@ -4050,6 +4042,8 @@ void SceneTreeDock::_update_tree_menu() {
40504042
resource_list->connect("about_to_popup", callable_mp(this, &SceneTreeDock::_list_all_subresources).bind(resource_list));
40514043
resource_list->connect("index_pressed", callable_mp(this, &SceneTreeDock::_edit_subresource).bind(resource_list));
40524044
tree_menu->add_submenu_node_item(TTR("All Scene Sub-Resources"), resource_list);
4045+
4046+
_append_filter_options_to(tree_menu, true);
40534047
}
40544048

40554049
void SceneTreeDock::_filter_changed(const String &p_filter) {
@@ -4072,9 +4066,14 @@ void SceneTreeDock::_filter_gui_input(const Ref<InputEvent> &p_event) {
40724066
}
40734067

40744068
if (mb->is_pressed() && mb->get_button_index() == MouseButton::MIDDLE) {
4075-
filter_quick_menu->clear();
4069+
if (filter_quick_menu == nullptr) {
4070+
filter_quick_menu = memnew(PopupMenu);
4071+
filter_quick_menu->set_theme_type_variation("FlatMenuButton");
4072+
_append_filter_options_to(filter_quick_menu, false);
4073+
filter_quick_menu->connect(SceneStringName(id_pressed), callable_mp(this, &SceneTreeDock::_filter_option_selected));
4074+
filter->add_child(filter_quick_menu);
4075+
}
40764076

4077-
_append_filter_options_to(filter_quick_menu, false);
40784077
filter_quick_menu->set_position(get_screen_position() + get_local_mouse_position());
40794078
filter_quick_menu->reset_size();
40804079
filter_quick_menu->popup();
@@ -4103,13 +4102,14 @@ void SceneTreeDock::_filter_option_selected(int p_option) {
41034102

41044103
void SceneTreeDock::_append_filter_options_to(PopupMenu *p_menu, bool p_include_separator) {
41054104
if (p_include_separator) {
4106-
p_menu->add_separator(TTR("Filters"));
4105+
p_menu->add_separator();
41074106
}
41084107

4109-
p_menu->add_item(TTR("Filter by Type"), FILTER_BY_TYPE);
4110-
p_menu->add_item(TTR("Filter by Group"), FILTER_BY_GROUP);
4111-
p_menu->set_item_tooltip(p_menu->get_item_index(FILTER_BY_TYPE), TTR("Selects all Nodes of the given type."));
4112-
p_menu->set_item_tooltip(p_menu->get_item_index(FILTER_BY_GROUP), TTR("Selects all Nodes belonging to the given group.\nIf empty, selects any Node belonging to any group."));
4108+
p_menu->add_item(TTRC("Filter by Type"), FILTER_BY_TYPE);
4109+
p_menu->set_item_tooltip(-1, TTRC("Selects all Nodes of the given type.\nInserts \"type:\". You can also use the shorthand \"t:\"."));
4110+
4111+
p_menu->add_item(TTRC("Filter by Group"), FILTER_BY_GROUP);
4112+
p_menu->set_item_tooltip(-1, TTRC("Selects all Nodes belonging to the given group.\nIf empty, selects any Node belonging to any group.\nInserts \"group:\". You can also use the shorthand \"g:\"."));
41134113
}
41144114

41154115
String SceneTreeDock::get_filter() {
@@ -4760,20 +4760,15 @@ SceneTreeDock::SceneTreeDock(Node *p_scene_root, EditorSelection *p_editor_selec
47604760
// The "Filter Nodes" text input above the Scene Tree Editor.
47614761
filter = memnew(LineEdit);
47624762
filter->set_h_size_flags(SIZE_EXPAND_FILL);
4763-
filter->set_placeholder(TTRC("Filter: name, t:type, g:group"));
4763+
filter->set_placeholder(TTRC("Filter Nodes"));
47644764
filter->set_accessibility_name(TTRC("Filter Nodes"));
47654765
filter->set_tooltip_text(TTRC("Filter nodes by entering a part of their name, type (if prefixed with \"type:\" or \"t:\")\nor group (if prefixed with \"group:\" or \"g:\"). Filtering is case-insensitive."));
47664766
filter_hbc->add_child(filter);
47674767
filter->add_theme_constant_override("minimum_character_width", 0);
47684768
filter->connect(SceneStringName(text_changed), callable_mp(this, &SceneTreeDock::_filter_changed));
47694769
filter->connect(SceneStringName(gui_input), callable_mp(this, &SceneTreeDock::_filter_gui_input));
47704770
filter->get_menu()->connect(SceneStringName(id_pressed), callable_mp(this, &SceneTreeDock::_filter_option_selected));
4771-
_append_filter_options_to(filter->get_menu());
4772-
4773-
filter_quick_menu = memnew(PopupMenu);
4774-
filter_quick_menu->set_theme_type_variation("FlatMenuButton");
4775-
filter_quick_menu->connect(SceneStringName(id_pressed), callable_mp(this, &SceneTreeDock::_filter_option_selected));
4776-
filter->add_child(filter_quick_menu);
4771+
_append_filter_options_to(filter->get_menu(), true);
47774772

47784773
button_create_script = memnew(Button);
47794774
button_create_script->set_theme_type_variation("FlatMenuButton");

editor/docks/scene_tree_dock.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ class SceneTreeDock : public EditorDock {
274274
void _filter_changed(const String &p_filter);
275275
void _filter_gui_input(const Ref<InputEvent> &p_event);
276276
void _filter_option_selected(int option);
277-
void _append_filter_options_to(PopupMenu *p_menu, bool p_include_separator = true);
277+
void _append_filter_options_to(PopupMenu *p_menu, bool p_include_separator);
278278

279279
void _perform_instantiate_scenes(const Vector<String> &p_files, Node *p_parent, int p_pos);
280280
void _perform_create_audio_stream_players(const Vector<String> &p_files, Node *p_parent, int p_pos);

0 commit comments

Comments
 (0)