From 94c5e76c737293963fdde34550e9eef9b8e3f46e Mon Sep 17 00:00:00 2001 From: ajreckof <66184050+ajreckof@users.noreply.github.com> Date: Sat, 15 Apr 2023 01:43:45 +0200 Subject: [PATCH] keep type after adding item --- editor/editor_properties_array_dict.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp index 8897f13b0eb3..414c9f8211ab 100644 --- a/editor/editor_properties_array_dict.cpp +++ b/editor/editor_properties_array_dict.cpp @@ -794,10 +794,21 @@ void EditorPropertyDictionary::_add_key_value() { } Dictionary dict = object->get_dict().duplicate(); - dict[object->get_new_item_key()] = object->get_new_item_value(); - object->set_new_item_key(Variant()); - object->set_new_item_value(Variant()); - + Variant new_key = object->get_new_item_key(); + if (!dict.has(new_key)) { + Variant new_value = object->get_new_item_value(); + dict[new_key] = new_value; + + Variant::Type type = new_key.get_type(); + new_key.zero(); + VariantInternal::initialize(&new_key, type); + object->set_new_item_key(new_key); + + type = new_value.get_type(); + new_value.zero(); + VariantInternal::initialize(&new_value, type); + object->set_new_item_value(new_value); + } emit_changed(get_edited_property(), dict, "", false); update_property(); }