Browse Source

Inspector: Fix clearing array/dictionary element with `<Object#null>`

(cherry picked from commit ed86c3300242a7d0af91a0366e59705fdcdd49ec)
Danil Alexeev 1 year ago
parent
commit
d25e28d9ae
1 changed files with 8 additions and 0 deletions
  1. 8 0
      editor/editor_properties_array_dict.cpp

+ 8 - 0
editor/editor_properties_array_dict.cpp

@@ -198,6 +198,10 @@ void EditorPropertyArray::_property_changed(const String &p_property, Variant p_
 		return;
 	}
 
+	if (p_value.get_type() == Variant::OBJECT && p_value.is_null()) {
+		p_value = Variant(); // `EditorResourcePicker` resets to `Ref<Resource>()`. See GH-82716.
+	}
+
 	int index;
 	if (p_property.begins_with("metadata/")) {
 		index = p_property.get_slice("/", 2).to_int();
@@ -726,6 +730,10 @@ EditorPropertyArray::EditorPropertyArray() {
 ///////////////////// DICTIONARY ///////////////////////////
 
 void EditorPropertyDictionary::_property_changed(const String &p_property, Variant p_value, const String &p_name, bool p_changing) {
+	if (p_value.get_type() == Variant::OBJECT && p_value.is_null()) {
+		p_value = Variant(); // `EditorResourcePicker` resets to `Ref<Resource>()`. See GH-82716.
+	}
+
 	if (p_property == "new_item_key") {
 		object->set_new_item_key(p_value);
 	} else if (p_property == "new_item_value") {