diff options
Diffstat (limited to 'sources/pyside6/libpyside/qobjectconnect.cpp')
| -rw-r--r-- | sources/pyside6/libpyside/qobjectconnect.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/qobjectconnect.cpp b/sources/pyside6/libpyside/qobjectconnect.cpp index e27827ce4..f3c420768 100644 --- a/sources/pyside6/libpyside/qobjectconnect.cpp +++ b/sources/pyside6/libpyside/qobjectconnect.cpp @@ -336,4 +336,22 @@ bool qobjectDisconnectCallback(QObject *source, const char *signal, PyObject *ca return true; } +bool callConnect(PyObject *self, const char *signal, PyObject *argument) +{ + using Shiboken::AutoDecRef; + + if (PyObject_TypeCheck(argument, PySideSignalInstance_TypeF()) == 0) { + AutoDecRef result(PyObject_CallMethod(self, "connect", "OsO", self, signal, argument)); + return !result.isNull(); + } + + // Connecting signal to signal + auto *signalInstance = reinterpret_cast<PySideSignalInstance *>(argument); + AutoDecRef signalSignature(Shiboken::String::fromFormat("2%s", PySide::Signal::getSignature(signalInstance))); + AutoDecRef result(PyObject_CallMethod(self, "connect", "OsOO", self, signal, + PySide::Signal::getObject(signalInstance), + signalSignature.object())); + return !result.isNull(); +} + } // namespace PySide |
