Skip to content

Commit

Permalink
Merge pull request #92457 from YeldhamDev/extreme_corner_case_but_still
Browse files Browse the repository at this point in the history
Set `doc_name` even when categories are hidden in the inspector
  • Loading branch information
akien-mga committed May 29, 2024
2 parents 4d255a1 + 1bfcb6e commit 21810ca
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 29 deletions.
3 changes: 2 additions & 1 deletion editor/editor_help.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
#include "core/object/script_language.h"
#include "core/os/keyboard.h"
#include "core/string/string_builder.h"
#include "core/version.h"
#include "core/version_generated.gen.h"
#include "editor/doc_data_compressed.gen.h"
#include "editor/editor_node.h"
#include "editor/editor_paths.h"
Expand Down Expand Up @@ -3383,6 +3383,7 @@ EditorHelpBit::HelpData EditorHelpBit::_get_theme_item_help_data(const StringNam
if (theme_item.name == p_theme_item_name) {
result = current;
found = true;

if (!is_native) {
break;
}
Expand Down
63 changes: 35 additions & 28 deletions editor/editor_inspector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2869,15 +2869,6 @@ void EditorInspector::update_tree() {
// Otherwise the category was probably added via `@export_category` or `_get_property_list()`.
const bool is_custom_category = p.hint_string.is_empty();

if ((is_custom_category && !show_custom_categories) || (!is_custom_category && !show_standard_categories)) {
continue;
}

// Hide the "MultiNodeEdit" category for MultiNodeEdit.
if (Object::cast_to<MultiNodeEdit>(object) && p.name == "MultiNodeEdit") {
continue;
}

// Iterate over remaining properties. If no properties in category, skip the category.
List<PropertyInfo>::Element *N = E_property->next();
bool valid = true;
Expand All @@ -2898,22 +2889,20 @@ void EditorInspector::update_tree() {
continue; // Empty, ignore it.
}

// Create an EditorInspectorCategory and add it to the inspector.
EditorInspectorCategory *category = memnew(EditorInspectorCategory);
main_vbox->add_child(category);
category_vbox = nullptr; //reset
String category_label;
String category_tooltip;
Ref<Texture> category_icon;

// Do not add an icon, do not change the current class (`doc_name`) for custom categories.
if (is_custom_category) {
category->label = p.name;
category->set_tooltip_text(p.name);
category_label = p.name;
category_tooltip = p.name;
} else {
String type = p.name;
String label = p.name;
doc_name = p.name;
category_label = p.name;

// Use category's owner script to update some of its information.
if (!EditorNode::get_editor_data().is_type_recognized(type) && ResourceLoader::exists(p.hint_string)) {
if (!EditorNode::get_editor_data().is_type_recognized(p.name) && ResourceLoader::exists(p.hint_string)) {
Ref<Script> scr = ResourceLoader::load(p.hint_string, "Script");
if (scr.is_valid()) {
StringName script_name = EditorNode::get_editor_data().script_class_get_name(scr->get_path());
Expand All @@ -2926,32 +2915,50 @@ void EditorInspector::update_tree() {
doc_name = docs[docs.size() - 1].name;
}
if (script_name != StringName()) {
label = script_name;
category_label = script_name;
}

// Find the icon corresponding to the script.
if (script_name != StringName()) {
category->icon = EditorNode::get_singleton()->get_class_icon(script_name);
category_icon = EditorNode::get_singleton()->get_class_icon(script_name);
} else {
category->icon = EditorNode::get_singleton()->get_object_icon(scr.ptr(), "Object");
category_icon = EditorNode::get_singleton()->get_object_icon(scr.ptr(), "Object");
}
}
}

if (category->icon.is_null() && !type.is_empty()) {
category->icon = EditorNode::get_singleton()->get_class_icon(type);
if (category_icon.is_null() && !p.name.is_empty()) {
category_icon = EditorNode::get_singleton()->get_class_icon(p.name);
}

// Set the category label.
category->label = label;
category->doc_class_name = doc_name;

if (use_doc_hints) {
// `|` separators used in `EditorHelpBit`.
category->set_tooltip_text("class|" + doc_name + "|");
category_tooltip = "class|" + doc_name + "|";
}
}

if ((is_custom_category && !show_custom_categories) || (!is_custom_category && !show_standard_categories)) {
continue;
}

// Hide the "MultiNodeEdit" category for MultiNodeEdit.
if (Object::cast_to<MultiNodeEdit>(object) && p.name == "MultiNodeEdit") {
continue;
}

// Create an EditorInspectorCategory and add it to the inspector.
EditorInspectorCategory *category = memnew(EditorInspectorCategory);
main_vbox->add_child(category);
category_vbox = nullptr; // Reset.

// Set the category info.
category->label = category_label;
category->set_tooltip_text(category_tooltip);
category->icon = category_icon;
if (!is_custom_category) {
category->doc_class_name = doc_name;
}

// Add editors at the start of a category.
for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
ped->parse_category(object, p.name);
Expand Down

0 comments on commit 21810ca

Please sign in to comment.