Keep "lock" metadata when changing a Node's type, if applicable

This commit is contained in:
Michael Alexsander 2020-05-18 11:38:48 -03:00
parent dee8f8db74
commit d015e4d6fc

View file

@ -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)) { if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
continue; continue;
} }
if (E->get().name == "__meta__") { 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; continue;
} }
if (default_oldnode->get(E->get().name) != n->get(E->get().name)) { if (default_oldnode->get(E->get().name) != n->get(E->get().name)) {
newnode->set(E->get().name, n->get(E->get().name)); newnode->set(E->get().name, n->get(E->get().name));
} }