Skip to content

Commit

Permalink
Merge pull request #92802 from dalexeev/editor-hide-gdscript-internal…
Browse files Browse the repository at this point in the history
…-funcs

Editor: Hide GDScript internal functions from method selectors
  • Loading branch information
akien-mga committed Jun 7, 2024
2 parents 747e0f5 + ae737d8 commit 31b55e7
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
9 changes: 9 additions & 0 deletions editor/connections_dialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,13 @@ List<MethodInfo> ConnectDialog::_filter_method_list(const List<MethodInfo> &p_me
}

for (const MethodInfo &mi : p_methods) {
if (mi.name.begins_with("@")) {
// GH-92782. GDScript inline setters/getters are historically present in `get_method_list()`
// and can be called using `Object.call()`. However, these functions are meant to be internal
// and their names are not valid identifiers, so let's hide them from the user.
continue;
}

if (!p_search_string.is_empty() && !mi.name.containsn(p_search_string)) {
continue;
}
Expand Down Expand Up @@ -324,8 +331,10 @@ List<MethodInfo> ConnectDialog::_filter_method_list(const List<MethodInfo> &p_me
continue;
}
}

ret.push_back(mi);
}

return ret;
}

Expand Down
17 changes: 15 additions & 2 deletions editor/property_selector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,11 +225,24 @@ void PropertySelector::_update_search() {
} else {
Ref<Script> script_ref = Object::cast_to<Script>(ObjectDB::get_instance(script));
if (script_ref.is_valid()) {
methods.push_back(MethodInfo("*Script Methods"));
if (script_ref->is_built_in()) {
script_ref->reload(true);
}
script_ref->get_script_method_list(&methods);

List<MethodInfo> script_methods;
script_ref->get_script_method_list(&script_methods);

methods.push_back(MethodInfo("*Script Methods")); // TODO: Split by inheritance.

for (const MethodInfo &mi : script_methods) {
if (mi.name.begins_with("@")) {
// GH-92782. GDScript inline setters/getters are historically present in `get_method_list()`
// and can be called using `Object.call()`. However, these functions are meant to be internal
// and their names are not valid identifiers, so let's hide them from the user.
continue;
}
methods.push_back(mi);
}
}

StringName base = base_type;
Expand Down

0 comments on commit 31b55e7

Please sign in to comment.