Add missing warning about copying packed arrays to EditorHelpBit

This commit is contained in:
Danil Alexeev 2025-11-11 13:51:47 +03:00
parent 8327dfa215
commit 0b20ae2e87
No known key found for this signature in database
GPG key ID: 5A52F75A8679EC57
2 changed files with 13 additions and 0 deletions

View file

@ -87,6 +87,7 @@ BASE_STRINGS = [
"This method may be changed or removed in future versions.",
"This operator may be changed or removed in future versions.",
"This theme property may be changed or removed in future versions.",
# See also `make_rst_class()` and `editor/doc/editor_help.cpp`.
"[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [%s] for more details.",
]
strings_l10n: Dict[str, str] = {}
@ -1303,6 +1304,7 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Add copy note to built-in properties returning `Packed*Array`.
if property_def.type_name.type_name in PACKED_ARRAY_TYPES:
# See also `BASE_STRINGS` and `editor/doc/editor_help.cpp`.
copy_note = f"[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [{property_def.type_name.type_name}] for more details."
f.write(f"{format_text_block(copy_note, property_def, state)}\n\n")

View file

@ -2325,6 +2325,7 @@ void EditorHelp::_update_doc() {
if (!cd.is_script_doc && packed_array_types.has(prop.type)) {
class_desc->add_newline();
class_desc->add_newline();
// See also `EditorHelpBit::parse_symbol()` and `doc/tools/make_rst.py`.
_add_text(vformat(TTR("[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [%s] for more details."), prop.type));
}
@ -4368,6 +4369,16 @@ void EditorHelpBit::parse_symbol(const String &p_symbol, const String &p_prologu
symbol_hint = SYMBOL_HINT_ASSIGNABLE;
}
help_data = _get_property_help_data(class_name, item_name);
// Add copy note to built-in properties returning `Packed*Array`.
const DocData::ClassDoc *cd = EditorHelp::get_doc(class_name);
if (cd && !cd->is_script_doc && packed_array_types.has(help_data.doc_type.type)) {
if (!help_data.description.is_empty()) {
help_data.description += "\n";
}
// See also `EditorHelp::_update_doc()` and `doc/tools/make_rst.py`.
help_data.description += vformat(TTR("[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [%s] for more details."), help_data.doc_type.type);
}
} else if (item_type == "internal_property") {
symbol_type = TTR("Internal Property");
help_data.description = "[color=<EditorHelpBitCommentColor>][i]" + TTR("This property can only be set in the Inspector.") + "[/i][/color]";