diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index bc5a969ba2bf..1632bee43fc9 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -2780,11 +2780,12 @@ Additionally, other keywords can be included: [code]"exp"[/code] for exponential range editing, [code]"radians_as_degrees"[/code] for editing radian angles in degrees (the range values are also in degrees), [code]"degrees"[/code] to hint at an angle, [code]"prefer_slider"[/code] to show the slider for integers, and [code]"hide_control"[/code] to hide the slider or up-down arrows. - Hints that an [int] or [String] property is an enumerated value to pick in a list specified via a hint string. - The hint string is a comma separated list of names such as [code]"Hello,Something,Else"[/code]. Whitespaces are [b]not[/b] removed from either end of a name. For integer properties, the first name in the list has value 0, the next 1, and so on. Explicit values can also be specified by appending [code]:integer[/code] to the name, e.g. [code]"Zero,One,Three:3,Four,Six:6"[/code]. + Hints that an [int], [String], or [StringName] property is an enumerated value to pick in a list specified via a hint string. The hint string is a comma separated list of names such as [code]"Hello,Something,Else"[/code]. Whitespaces are [b]not[/b] removed from either end of a name. + For integer properties, the first name in the list has value 0, the next 1, and so on. Explicit values can also be specified by appending [code]:integer[/code] to the name, e.g. [code]"Zero,One,Three:3,Four,Six:6"[/code]. + For string properties, explicit values are specified by changing to the [code]";Value 1/Name 2;Value 2/Name 2"[/code] syntax, e.g. [code]";ar/Arabic;en/English;es/Spanish;zh/Chinese"[/code]. - Hints that a [String] property can be an enumerated value to pick in a list specified via a hint string such as [code]"Hello,Something,Else"[/code]. + Hints that a [String] or [StringName] property can be an enumerated value to pick in a list specified via a hint string such as [code]"Hello,Something,Else"[/code]. See [constant PROPERTY_HINT_ENUM] for details. Unlike [constant PROPERTY_HINT_ENUM], a property with this hint still accepts arbitrary values and can be empty. The list of values serves to suggest possible values. diff --git a/editor/inspector/editor_properties.cpp b/editor/inspector/editor_properties.cpp index 4a3f2aebef4d..449d12ea242b 100644 --- a/editor/inspector/editor_properties.cpp +++ b/editor/inspector/editor_properties.cpp @@ -4010,8 +4010,17 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_ case Variant::STRING_NAME: { if (p_hint == PROPERTY_HINT_ENUM || p_hint == PROPERTY_HINT_ENUM_SUGGESTION) { EditorPropertyTextEnum *editor = memnew(EditorPropertyTextEnum); - Vector options = p_hint_text.split(",", false); - editor->setup(options, Vector(), true, (p_hint == PROPERTY_HINT_ENUM_SUGGESTION)); + Vector options; + Vector option_names; + if (p_hint_text.begins_with(";")) { + for (const String &option : p_hint_text.split(";", false)) { + options.append(option.get_slicec('/', 0)); + option_names.append(option.get_slicec('/', 1)); + } + } else { + options = p_hint_text.split(",", false); + } + editor->setup(options, option_names, true, (p_hint == PROPERTY_HINT_ENUM_SUGGESTION)); return editor; } else if (p_hint == PROPERTY_HINT_INPUT_NAME) { return get_input_action_editor(p_hint_text, true);