From fd75bb562ed76cb90f17f8fc8be332666a600bec Mon Sep 17 00:00:00 2001 From: Rindbee Date: Sun, 22 Jan 2023 16:12:56 +0800 Subject: [PATCH] Do not cache the doc information written by user in the script in Inspector The doc information of the edited object is cached to reuse it in the next `EditorInspector::update_tree()` call. This is not suitable for doc information written by users in the script because it is easily changed. --- editor/editor_inspector.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 0c813f2f778..c31b00da829 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -2808,18 +2808,22 @@ void EditorInspector::update_tree() { category->label = label; if (use_doc_hints) { + String descr = ""; // Sets the category tooltip to show documentation. if (!class_descr_cache.has(doc_name)) { - String descr; DocTools *dd = EditorHelp::get_doc_data(); HashMap::Iterator E = dd->class_list.find(doc_name); if (E) { descr = DTR(E->value.brief_description); } - class_descr_cache[doc_name] = descr; + if (ClassDB::class_exists(doc_name)) { + class_descr_cache[doc_name] = descr; // Do not cache the class description of scripts. + } + } else { + descr = class_descr_cache[doc_name]; } - category->set_tooltip_text(p.name + "::" + (class_descr_cache[doc_name].is_empty() ? "" : class_descr_cache[doc_name])); + category->set_tooltip_text(p.name + "::" + descr); } // Add editors at the start of a category. @@ -3212,7 +3216,9 @@ void EditorInspector::update_tree() { } } - doc_info_cache[classname][propname] = doc_info; + if (ClassDB::class_exists(classname)) { + doc_info_cache[classname][propname] = doc_info; // Do not cache the doc information of scripts. + } } }