Browse Source

Ensure one shot signals are not disconnected while edited, closes #7776

Juan Linietsky 7 years ago
parent
commit
ac52eb444f
1 changed files with 9 additions and 1 deletions
  1. 9 1
      core/object.cpp

+ 9 - 1
core/object.cpp

@@ -1209,7 +1209,15 @@ Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int
 			}
 			}
 		}
 		}
 
 
-		if (c.flags & CONNECT_ONESHOT) {
+		bool disconnect = c.flags & CONNECT_ONESHOT;
+#ifdef TOOLS_ENABLED
+		if (disconnect && (c.flags & CONNECT_PERSIST) && Engine::get_singleton()->is_editor_hint()) {
+			//this signal was connected from the editor, and is being edited. just dont disconnect for now
+			disconnect = false;
+		}
+#endif
+		if (disconnect) {
+
 			_ObjectSignalDisconnectData dd;
 			_ObjectSignalDisconnectData dd;
 			dd.signal = p_name;
 			dd.signal = p_name;
 			dd.target = target;
 			dd.target = target;