diff options
author | Michael Alexsander <michaelalexsander@protonmail.com> | 2020-05-18 11:38:48 -0300 |
---|---|---|
committer | Michael Alexsander <michaelalexsander@protonmail.com> | 2020-05-19 10:42:15 -0300 |
commit | d015e4d6fcc85ba892a7fa2a511f1f5d72880d0d (patch) | |
tree | 48b15db7838e4b7796ce2b8362e16060ca0d8e7c | |
parent | dee8f8db745e58caedbf49bbc13a2fdcc8fb1da4 (diff) |
Keep "lock" metadata when changing a Node's type, if applicable
-rw-r--r-- | editor/scene_tree_dock.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 514bb8dd03..a81a2ff4e9 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -2064,9 +2064,21 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) { continue; } + if (E->get().name == "__meta__") { + if (Object::cast_to<CanvasItem>(newnode)) { + Dictionary metadata = n->get(E->get().name); + if (metadata.has("_edit_group_") && metadata["_edit_group_"]) { + newnode->set_meta("_edit_group_", true); + } + if (metadata.has("_edit_lock_") && metadata["_edit_lock_"]) { + newnode->set_meta("_edit_lock_", true); + } + } + continue; } + if (default_oldnode->get(E->get().name) != n->get(E->get().name)) { newnode->set(E->get().name, n->get(E->get().name)); } |