|
@@ -1443,8 +1443,20 @@ Error Object::connect(const StringName &p_signal, Object *p_to_object, const Str
|
|
|
if (!s) {
|
|
|
bool signal_is_valid = ClassDB::has_signal(get_class_name(), p_signal);
|
|
|
//check in script
|
|
|
- if (!signal_is_valid && !script.is_null() && Ref<Script>(script)->has_script_signal(p_signal))
|
|
|
- signal_is_valid = true;
|
|
|
+ if (!signal_is_valid && !script.is_null()) {
|
|
|
+
|
|
|
+ if (Ref<Script>(script)->has_script_signal(p_signal)) {
|
|
|
+ signal_is_valid = true;
|
|
|
+ }
|
|
|
+#ifdef TOOLS_ENABLED
|
|
|
+ else {
|
|
|
+ //allow connecting signals anyway if script is invalid, see issue #17070
|
|
|
+ if (!Ref<Script>(script)->is_valid()) {
|
|
|
+ signal_is_valid = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ }
|
|
|
|
|
|
if (!signal_is_valid) {
|
|
|
ERR_EXPLAIN("In Object of type '" + String(get_class()) + "': Attempt to connect nonexistent signal '" + p_signal + "' to method '" + p_to_object->get_class() + "." + p_to_method + "'");
|