1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-06 12:20:30 +00:00

Merge pull request #79366 from dalexeev/gds-signal-info-and-callback

Editor: Improve signal callback generation
This commit is contained in:
Rémi Verschelde
2023-09-17 14:45:47 +02:00
3 changed files with 38 additions and 8 deletions

View File

@@ -517,16 +517,41 @@ String ConnectDialog::get_signature(const MethodInfo &p_method, PackedStringArra
}
const PropertyInfo &pi = p_method.arguments[i];
String tname = "var";
if (pi.type == Variant::OBJECT && pi.class_name != StringName()) {
tname = pi.class_name.operator String();
} else if (pi.type != Variant::NIL) {
tname = Variant::get_type_name(pi.type);
String type_name;
switch (pi.type) {
case Variant::NIL:
type_name = "Variant";
break;
case Variant::INT:
if ((pi.usage & PROPERTY_USAGE_CLASS_IS_ENUM) && pi.class_name != StringName() && !String(pi.class_name).begins_with("res://")) {
type_name = pi.class_name;
} else {
type_name = "int";
}
break;
case Variant::ARRAY:
if (pi.hint == PROPERTY_HINT_ARRAY_TYPE && !pi.hint_string.is_empty() && !pi.hint_string.begins_with("res://")) {
type_name = "Array[" + pi.hint_string + "]";
} else {
type_name = "Array";
}
break;
case Variant::OBJECT:
if (pi.class_name != StringName()) {
type_name = pi.class_name;
} else {
type_name = "Object";
}
break;
default:
type_name = Variant::get_type_name(pi.type);
break;
}
signature.append((pi.name.is_empty() ? String("arg " + itos(i)) : pi.name) + ": " + tname);
String arg_name = pi.name.is_empty() ? "arg" + itos(i) : pi.name;
signature.append(arg_name + ": " + type_name);
if (r_arg_names) {
r_arg_names->push_back(pi.name + ":" + tname);
r_arg_names->push_back(arg_name + ":" + type_name);
}
}