Bladeren bron

Fix missing gutter icon for inner class method overrides

Alex Drozd 1 jaar geleden
bovenliggende
commit
1d93a1fbb8
1 gewijzigde bestanden met toevoegingen van 13 en 2 verwijderingen
  1. 13 2
      editor/plugins/script_text_editor.cpp

+ 13 - 2
editor/plugins/script_text_editor.cpp

@@ -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));
 		}
 		}
 	}
 	}
 }
 }