summaryrefslogtreecommitdiffstats
path: root/editor/editor_properties.cpp
diff options
context:
space:
mode:
authorRedMser <redmser.jj2@gmail.com>2023-11-26 16:44:18 +0100
committerRedMser <redmser.jj2@gmail.com>2024-03-31 21:35:10 +0200
commit9cd30208d6a89462d70bdd6f5bc97dd1119e05b0 (patch)
tree751d4d97cc5324b7148a7dddde62f3b4dff7bdf2 /editor/editor_properties.cpp
parent29b3d9e9e538f0aa8effc8ad8bf19a2915292a89 (diff)
downloadredot-engine-9cd30208d6a89462d70bdd6f5bc97dd1119e05b0.tar.gz
Improve SceneTreeEditor usability
- Mark contextually relevant node - Remember/Clear selection as appropriate - Scroll to marked/selected node
Diffstat (limited to 'editor/editor_properties.cpp')
-rw-r--r--editor/editor_properties.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index b7380c9fc2..c6a6163a4e 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -2751,7 +2751,15 @@ void EditorPropertyNodePath::_node_assign() {
add_child(scene_tree);
scene_tree->connect("selected", callable_mp(this, &EditorPropertyNodePath::_node_selected));
}
- scene_tree->popup_scenetree_dialog();
+
+ Variant val = get_edited_property_value();
+ Node *n = nullptr;
+ if (val.get_type() == Variant::Type::NODE_PATH) {
+ n = get_base_node()->get_node_or_null(val);
+ } else {
+ n = Object::cast_to<Node>(val);
+ }
+ scene_tree->popup_scenetree_dialog(n, get_base_node());
}
void EditorPropertyNodePath::_update_menu() {
@@ -3184,7 +3192,6 @@ void EditorPropertyResource::_resource_changed(const Ref<Resource> &p_resource)
add_child(scene_tree);
scene_tree->connect("selected", callable_mp(this, &EditorPropertyResource::_viewport_selected));
}
-
scene_tree->popup_scenetree_dialog();
}
}