From 672b2d4f222faec34858258e7dd13e6262e7346f Mon Sep 17 00:00:00 2001 From: dugramen Date: Thu, 6 Mar 2025 17:51:51 -0500 Subject: [PATCH] Inspect SceneTree node when anything is dragged over --- editor/scene_tree_dock.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 267d35f994..b79a2152ae 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -88,8 +88,12 @@ static void _restore_treeitem_custom_color(TreeItem *p_item) { } void SceneTreeDock::_inspect_hovered_node() { - select_node_hovered_at_end_of_drag = true; Tree *tree = scene_tree->get_scene_tree(); + if (!tree->get_rect().has_point(tree->get_local_mouse_position())) { + return; + } + + select_node_hovered_at_end_of_drag = true; TreeItem *item = tree->get_item_with_metadata(node_hovered_now->get_path()); _restore_treeitem_custom_color(tree_item_inspected); @@ -150,7 +154,14 @@ void SceneTreeDock::input(const Ref &p_event) { } } - if (tree_clicked && get_viewport()->gui_is_dragging()) { + Ref mm = p_event; + bool tree_hovered = false; + if (mm.is_valid()) { + Tree *tree = scene_tree->get_scene_tree(); + tree_hovered = tree->get_rect().has_point(tree->get_local_mouse_position()); + } + + if ((tree_clicked || tree_hovered) && get_viewport()->gui_is_dragging()) { _handle_hover_to_inspect(); } } @@ -4775,6 +4786,7 @@ SceneTreeDock::SceneTreeDock(Node *p_scene_root, EditorSelection *p_editor_selec inspect_hovered_node_delay = memnew(Timer); inspect_hovered_node_delay->connect("timeout", callable_mp(this, &SceneTreeDock::_inspect_hovered_node)); + inspect_hovered_node_delay->set_wait_time(.5); inspect_hovered_node_delay->set_one_shot(true); add_child(inspect_hovered_node_delay);