From 8d91f832444317885b824407dff6b6327085ab45 Mon Sep 17 00:00:00 2001 From: kobewi Date: Fri, 3 Oct 2025 11:27:42 +0200 Subject: [PATCH] Ensure correct metadata for enum items --- editor/inspector/editor_properties.cpp | 18 ++++++++++-------- editor/inspector/editor_properties.h | 1 + 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/editor/inspector/editor_properties.cpp b/editor/inspector/editor_properties.cpp index 7466e1e8631..ade5de4ff54 100644 --- a/editor/inspector/editor_properties.cpp +++ b/editor/inspector/editor_properties.cpp @@ -400,6 +400,7 @@ void EditorPropertyTextEnum::update_property() { // Manually entered value. if (default_option < 0 && !current_value.is_empty()) { option_button->add_item(current_value, options.size() + 1001); + option_button->set_item_metadata(-1, current_value); option_button->select(0); option_button->add_separator(); @@ -409,7 +410,8 @@ void EditorPropertyTextEnum::update_property() { option_button->add_item("", options.size() + 1000); for (int i = 0; i < options.size(); i++) { - option_button->add_item(options[i], i); + option_button->add_item(option_names[i], i); + option_button->set_item_metadata(-1, options[i]); if (options[i] == current_value) { option_button->select(option_button->get_item_count() - 1); } @@ -429,6 +431,11 @@ void EditorPropertyTextEnum::setup(const Vector &p_options, const Vector loose_mode = p_loose_mode; options = p_options; + if (p_option_names.is_empty()) { + option_names = p_options; + } else { + option_names = p_option_names; + } if (loose_mode) { // Add an explicit empty value for clearing the property in the loose mode. @@ -436,13 +443,8 @@ void EditorPropertyTextEnum::setup(const Vector &p_options, const Vector option_button->set_item_metadata(-1, String()); } - bool use_option_names = !p_option_names.is_empty(); - for (int i = 0; i < p_options.size(); i++) { - if (use_option_names) { - option_button->add_item(p_option_names[i], i); - } else { - option_button->add_item(p_options[i], i); - } + for (int i = 0; i < options.size(); i++) { + option_button->add_item(option_names[i], i); option_button->set_item_metadata(-1, options[i]); } diff --git a/editor/inspector/editor_properties.h b/editor/inspector/editor_properties.h index 751f8e310db..e6da8c1fa5a 100644 --- a/editor/inspector/editor_properties.h +++ b/editor/inspector/editor_properties.h @@ -134,6 +134,7 @@ class EditorPropertyTextEnum : public EditorProperty { Button *cancel_button = nullptr; Vector options; + Vector option_names; bool string_name = false; bool loose_mode = false;