@@ -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
40554049void 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
41044103void 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.\n If 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.\n Inserts \" 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.\n If empty, selects any Node belonging to any group.\n Inserts \" group:\" . You can also use the shorthand \" g:\" ." ));
41134113}
41144114
41154115String 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:\" )\n or 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" );
0 commit comments