diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2023-04-20 12:42:30 +0200 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-04-20 12:42:30 +0200 |
| commit | 1f5811eb032d643df94d935ac7ecb65af33bf3ac (patch) | |
| tree | 0380db9c8973713466454f2788f6e7382bff7170 | |
| parent | a58c5a9a368be565415feb050c537546ca0b8453 (diff) | |
| parent | 76c0a3fea07a31c5760ba0f75116fb557a7149fd (diff) | |
| download | redot-engine-1f5811eb032d643df94d935ac7ecb65af33bf3ac.tar.gz | |
Merge pull request #76238 from Calinou/editor-inspector-tooltip-display-enum-descriptions
Display enum value descriptions in the editor inspector help tooltips
| -rw-r--r-- | editor/editor_inspector.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index bd975622aa..31d66ba451 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -3159,11 +3159,32 @@ void EditorInspector::update_tree() { if (!found) { // Build the property description String and add it to the cache. DocTools *dd = EditorHelp::get_doc_data(); - HashMap<String, DocData::ClassDoc>::Iterator F = dd->class_list.find(classname); + HashMap<String, DocData::ClassDoc>::ConstIterator F = dd->class_list.find(classname); while (F && doc_info.description.is_empty()) { for (int i = 0; i < F->value.properties.size(); i++) { if (F->value.properties[i].name == propname.operator String()) { doc_info.description = DTR(F->value.properties[i].description); + + const Vector<String> class_enum = F->value.properties[i].enumeration.split("."); + const String class_name = class_enum[0]; + const String enum_name = class_enum.size() >= 2 ? class_enum[1] : ""; + if (!enum_name.is_empty()) { + HashMap<String, DocData::ClassDoc>::ConstIterator enum_class = dd->class_list.find(class_name); + if (enum_class) { + for (DocData::ConstantDoc val : enum_class->value.constants) { + // Don't display `_MAX` enum value descriptions, as these are never exposed in the inspector. + if (val.enumeration == enum_name && !val.name.ends_with("_MAX")) { + const String enum_value = EditorPropertyNameProcessor::get_singleton()->process_name(val.name, EditorPropertyNameProcessor::STYLE_CAPITALIZED); + // Prettify the enum value display, so that "<ENUM NAME>_<VALUE>" becomes "Value". + doc_info.description += vformat( + "\n[b]%s:[/b] %s", + enum_value.trim_prefix(EditorPropertyNameProcessor::get_singleton()->process_name(enum_name, EditorPropertyNameProcessor::STYLE_CAPITALIZED) + " "), + DTR(val.description).trim_prefix("\n")); + } + } + } + } + doc_info.path = "class_property:" + F->value.name + ":" + F->value.properties[i].name; break; } |
