From edde380e9cb1545d77e99bba99aaf55f55e7dc86 Mon Sep 17 00:00:00 2001 From: "Yevhen Babiichuk (DustDFG)" Date: Tue, 1 Oct 2024 20:03:21 +0300 Subject: Editor: forbid deleting inherited metadata properties Signed-off-by: Yevhen Babiichuk (DustDFG) Co-authored-by: Tomek --- editor/editor_inspector.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'editor') diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 21f67772ea..e6553cc92b 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -3401,6 +3401,14 @@ void EditorInspector::update_tree() { editors.append_array(late_editors); + const Node *node = Object::cast_to(object); + + Vector sstack; + if (node != nullptr) { + const Node *es = EditorNode::get_singleton()->get_edited_scene(); + sstack = PropertyUtils::get_node_states_stack(node, es); + } + for (int i = 0; i < editors.size(); i++) { EditorProperty *ep = Object::cast_to(editors[i].property_editor); const Vector &properties = editors[i].properties; @@ -3453,7 +3461,15 @@ void EditorInspector::update_tree() { ep->set_checked(checked); ep->set_keying(keying); ep->set_read_only(property_read_only || all_read_only); - ep->set_deletable(deletable_properties || p.name.begins_with("metadata/")); + if (p.name.begins_with("metadata/")) { + Variant _default = Variant(); + if (node != nullptr) { + _default = PropertyUtils::get_property_default_value(node, p.name, nullptr, &sstack, false, nullptr, nullptr); + } + ep->set_deletable(_default == Variant()); + } else { + ep->set_deletable(deletable_properties); + } } current_vbox->add_child(editors[i].property_editor); -- cgit v1.2.3