Editor: forbid deleting inherited metadata properties
Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com> Co-authored-by: Tomek <kobewi4e@gmail.com>
This commit is contained in:
parent
44fa552343
commit
edde380e9c
1 changed files with 17 additions and 1 deletions
|
@ -3401,6 +3401,14 @@ void EditorInspector::update_tree() {
|
|||
|
||||
editors.append_array(late_editors);
|
||||
|
||||
const Node *node = Object::cast_to<Node>(object);
|
||||
|
||||
Vector<SceneState::PackState> 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<EditorProperty>(editors[i].property_editor);
|
||||
const Vector<String> &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);
|
||||
|
|
Loading…
Reference in a new issue