Better hide internal properties from users
This commit is contained in:
parent
17e7f85c06
commit
d644b9b640
4 changed files with 35 additions and 7 deletions
|
@ -2862,9 +2862,17 @@ void EditorHelpTooltip::parse_tooltip(const String &p_text) {
|
||||||
const String &property_name = slices[2];
|
const String &property_name = slices[2];
|
||||||
const String &property_args = slices[3];
|
const String &property_args = slices[3];
|
||||||
|
|
||||||
|
String formatted_text;
|
||||||
|
|
||||||
|
// Exclude internal properties, they are not documented.
|
||||||
|
if (type == "internal_property") {
|
||||||
|
formatted_text = "[i]" + TTR("This property can only be set in the Inspector.") + "[/i]";
|
||||||
|
set_text(formatted_text);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
String title;
|
String title;
|
||||||
String description;
|
String description;
|
||||||
String formatted_text;
|
|
||||||
|
|
||||||
if (type == "class") {
|
if (type == "class") {
|
||||||
title = class_name;
|
title = class_name;
|
||||||
|
|
|
@ -436,6 +436,10 @@ void EditorProperty::set_doc_path(const String &p_doc_path) {
|
||||||
doc_path = p_doc_path;
|
doc_path = p_doc_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorProperty::set_internal(bool p_internal) {
|
||||||
|
internal = p_internal;
|
||||||
|
}
|
||||||
|
|
||||||
void EditorProperty::update_property() {
|
void EditorProperty::update_property() {
|
||||||
GDVIRTUAL_CALL(_update_property);
|
GDVIRTUAL_CALL(_update_property);
|
||||||
}
|
}
|
||||||
|
@ -748,10 +752,10 @@ void EditorProperty::shortcut_input(const Ref<InputEvent> &p_event) {
|
||||||
if (ED_IS_SHORTCUT("property_editor/copy_value", p_event)) {
|
if (ED_IS_SHORTCUT("property_editor/copy_value", p_event)) {
|
||||||
menu_option(MENU_COPY_VALUE);
|
menu_option(MENU_COPY_VALUE);
|
||||||
accept_event();
|
accept_event();
|
||||||
} else if (ED_IS_SHORTCUT("property_editor/paste_value", p_event) && !is_read_only()) {
|
} else if (!is_read_only() && ED_IS_SHORTCUT("property_editor/paste_value", p_event)) {
|
||||||
menu_option(MENU_PASTE_VALUE);
|
menu_option(MENU_PASTE_VALUE);
|
||||||
accept_event();
|
accept_event();
|
||||||
} else if (ED_IS_SHORTCUT("property_editor/copy_property_path", p_event)) {
|
} else if (!internal && ED_IS_SHORTCUT("property_editor/copy_property_path", p_event)) {
|
||||||
menu_option(MENU_COPY_PROPERTY_PATH);
|
menu_option(MENU_COPY_PROPERTY_PATH);
|
||||||
accept_event();
|
accept_event();
|
||||||
}
|
}
|
||||||
|
@ -1036,6 +1040,8 @@ void EditorProperty::_update_popup() {
|
||||||
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("ActionPaste")), ED_GET_SHORTCUT("property_editor/paste_value"), MENU_PASTE_VALUE);
|
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("ActionPaste")), ED_GET_SHORTCUT("property_editor/paste_value"), MENU_PASTE_VALUE);
|
||||||
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("CopyNodePath")), ED_GET_SHORTCUT("property_editor/copy_property_path"), MENU_COPY_PROPERTY_PATH);
|
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("CopyNodePath")), ED_GET_SHORTCUT("property_editor/copy_property_path"), MENU_COPY_PROPERTY_PATH);
|
||||||
menu->set_item_disabled(MENU_PASTE_VALUE, is_read_only());
|
menu->set_item_disabled(MENU_PASTE_VALUE, is_read_only());
|
||||||
|
menu->set_item_disabled(MENU_COPY_PROPERTY_PATH, internal);
|
||||||
|
|
||||||
if (!pin_hidden) {
|
if (!pin_hidden) {
|
||||||
menu->add_separator();
|
menu->add_separator();
|
||||||
if (can_pin) {
|
if (can_pin) {
|
||||||
|
@ -3329,7 +3335,11 @@ void EditorInspector::update_tree() {
|
||||||
if (use_doc_hints) {
|
if (use_doc_hints) {
|
||||||
// `|` separator used in `EditorHelpTooltip` for formatting.
|
// `|` separator used in `EditorHelpTooltip` for formatting.
|
||||||
if (theme_item_name.is_empty()) {
|
if (theme_item_name.is_empty()) {
|
||||||
ep->set_tooltip_text("property|" + classname + "|" + property_prefix + p.name + "|");
|
if (p.usage & PROPERTY_USAGE_INTERNAL) {
|
||||||
|
ep->set_tooltip_text("internal_property|" + classname + "|" + property_prefix + p.name + "|");
|
||||||
|
} else {
|
||||||
|
ep->set_tooltip_text("property|" + classname + "|" + property_prefix + p.name + "|");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ep->set_tooltip_text("theme_item|" + classname + "|" + theme_item_name + "|");
|
ep->set_tooltip_text("theme_item|" + classname + "|" + theme_item_name + "|");
|
||||||
}
|
}
|
||||||
|
@ -3337,6 +3347,8 @@ void EditorInspector::update_tree() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ep->set_doc_path(doc_path);
|
ep->set_doc_path(doc_path);
|
||||||
|
ep->set_internal(p.usage & PROPERTY_USAGE_INTERNAL);
|
||||||
|
|
||||||
ep->update_property();
|
ep->update_property();
|
||||||
ep->_update_pin_flags();
|
ep->_update_pin_flags();
|
||||||
ep->update_editor_property_status();
|
ep->update_editor_property_status();
|
||||||
|
|
|
@ -74,6 +74,7 @@ private:
|
||||||
StringName property;
|
StringName property;
|
||||||
String property_path;
|
String property_path;
|
||||||
String doc_path;
|
String doc_path;
|
||||||
|
bool internal = false;
|
||||||
bool has_doc_tooltip = false;
|
bool has_doc_tooltip = false;
|
||||||
|
|
||||||
int property_usage;
|
int property_usage;
|
||||||
|
@ -156,6 +157,7 @@ public:
|
||||||
EditorInspector *get_parent_inspector() const;
|
EditorInspector *get_parent_inspector() const;
|
||||||
|
|
||||||
void set_doc_path(const String &p_doc_path);
|
void set_doc_path(const String &p_doc_path);
|
||||||
|
void set_internal(bool p_internal);
|
||||||
|
|
||||||
virtual void update_property();
|
virtual void update_property();
|
||||||
void update_editor_property_status();
|
void update_editor_property_status();
|
||||||
|
|
|
@ -1135,7 +1135,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
|
||||||
List<PropertyInfo> members;
|
List<PropertyInfo> members;
|
||||||
scr->get_script_property_list(&members);
|
scr->get_script_property_list(&members);
|
||||||
for (const PropertyInfo &E : members) {
|
for (const PropertyInfo &E : members) {
|
||||||
if (E.usage & (PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_SUBGROUP)) {
|
if (E.usage & (PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_INTERNAL)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (E.name.contains("/")) {
|
if (E.name.contains("/")) {
|
||||||
|
@ -1210,7 +1210,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
|
||||||
List<PropertyInfo> pinfo;
|
List<PropertyInfo> pinfo;
|
||||||
ClassDB::get_property_list(type, &pinfo);
|
ClassDB::get_property_list(type, &pinfo);
|
||||||
for (const PropertyInfo &E : pinfo) {
|
for (const PropertyInfo &E : pinfo) {
|
||||||
if (E.usage & (PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_SUBGROUP)) {
|
if (E.usage & (PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_INTERNAL)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (E.name.contains("/")) {
|
if (E.name.contains("/")) {
|
||||||
|
@ -1273,7 +1273,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const PropertyInfo &E : members) {
|
for (const PropertyInfo &E : members) {
|
||||||
if (E.usage & (PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_SUBGROUP)) {
|
if (E.usage & (PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_INTERNAL)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!String(E.name).contains("/")) {
|
if (!String(E.name).contains("/")) {
|
||||||
|
@ -3514,6 +3514,12 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ClassDB::has_property(class_name, p_symbol, true)) {
|
if (ClassDB::has_property(class_name, p_symbol, true)) {
|
||||||
|
PropertyInfo prop_info;
|
||||||
|
ClassDB::get_property_info(class_name, p_symbol, &prop_info, true);
|
||||||
|
if (prop_info.usage & PROPERTY_USAGE_INTERNAL) {
|
||||||
|
return ERR_CANT_RESOLVE;
|
||||||
|
}
|
||||||
|
|
||||||
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_PROPERTY;
|
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_PROPERTY;
|
||||||
r_result.class_name = base_type.native_type;
|
r_result.class_name = base_type.native_type;
|
||||||
r_result.class_member = p_symbol;
|
r_result.class_member = p_symbol;
|
||||||
|
|
Loading…
Reference in a new issue