diff options
author | RedMser <redmser.jj2@gmail.com> | 2023-11-26 16:44:18 +0100 |
---|---|---|
committer | RedMser <redmser.jj2@gmail.com> | 2024-03-31 21:35:10 +0200 |
commit | 9cd30208d6a89462d70bdd6f5bc97dd1119e05b0 (patch) | |
tree | 751d4d97cc5324b7148a7dddde62f3b4dff7bdf2 /editor/editor_properties.cpp | |
parent | 29b3d9e9e538f0aa8effc8ad8bf19a2915292a89 (diff) | |
download | redot-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.cpp | 11 |
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(); } } |