Merge pull request #89545 from brno32/override-gutter-icon-inner-class-method

Fix missing gutter icon for inner class method overrides
This commit is contained in:
Rémi Verschelde 2024-03-26 13:45:18 +01:00
commit 4dec783017
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -1164,11 +1164,22 @@ void ScriptTextEditor::_update_connected_methods() {
// Add override icons to methods. // Add override icons to methods.
methods_found.clear(); methods_found.clear();
for (int i = 0; i < functions.size(); i++) { for (int i = 0; i < functions.size(); i++) {
StringName name = StringName(functions[i].get_slice(":", 0)); String raw_name = functions[i].get_slice(":", 0);
StringName name = StringName(raw_name);
if (methods_found.has(name)) { if (methods_found.has(name)) {
continue; continue;
} }
// Account for inner classes
if (raw_name.contains(".")) {
// Strip inner class name from the method, and start from the right since
// our inner class might be inside another inner class
int pos = raw_name.rfind(".");
if (pos != -1) {
name = raw_name.substr(pos + 1);
}
}
String found_base_class; String found_base_class;
StringName base_class = script->get_instance_base_type(); StringName base_class = script->get_instance_base_type();
Ref<Script> inherited_script = script->get_base_script(); Ref<Script> inherited_script = script->get_base_script();
@ -1217,7 +1228,7 @@ void ScriptTextEditor::_update_connected_methods() {
text_edit->set_line_gutter_icon(line, connection_gutter, get_parent_control()->get_editor_theme_icon(SNAME("MethodOverrideAndSlot"))); text_edit->set_line_gutter_icon(line, connection_gutter, get_parent_control()->get_editor_theme_icon(SNAME("MethodOverrideAndSlot")));
} }
methods_found.insert(name); methods_found.insert(StringName(raw_name));
} }
} }
} }