From e5ed038ad26e6905e8e32be6a63d678192557327 Mon Sep 17 00:00:00 2001 From: kobewi Date: Thu, 15 Aug 2024 07:14:08 +0200 Subject: [PATCH] Allow empty click in scene tree dock --- editor/scene_tree_dock.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 230cc430647..e148cda9a6f 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -3747,28 +3747,26 @@ void SceneTreeDock::_add_children_to_popup(Object *p_obj, int p_depth) { } void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) { - if (!EditorNode::get_singleton()->get_edited_scene()) { - menu->clear(false); - if (profile_allow_editing) { - menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Add")), ED_GET_SHORTCUT("scene_tree/add_child_node"), TOOL_NEW); - menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Instance")), ED_GET_SHORTCUT("scene_tree/instantiate_scene"), TOOL_INSTANTIATE); - } - - menu->reset_size(); - menu->set_position(get_screen_position() + p_menu_pos); - menu->popup(); - return; - } + ERR_FAIL_COND(!EditorNode::get_singleton()->get_edited_scene()); + menu->clear(false); List selection = editor_selection->get_top_selected_node_list(); List full_selection = editor_selection->get_full_selected_node_list(); // Above method only returns nodes with common parent. if (selection.is_empty()) { + if (!profile_allow_editing) { + return; + } + + menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Add")), ED_GET_SHORTCUT("scene_tree/add_child_node"), TOOL_NEW); + menu->add_icon_shortcut(get_editor_theme_icon(SNAME("Instance")), ED_GET_SHORTCUT("scene_tree/instantiate_scene"), TOOL_INSTANTIATE); + + menu->reset_size(); + menu->set_position(p_menu_pos); + menu->popup(); return; } - menu->clear(false); - Ref