diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-12-08 10:12:40 +0100 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-12-12 14:25:19 +0100 |
| commit | 5b5cb391ccc318128946c64154a3284ae434bf8a (patch) | |
| tree | d38160374de34be9ca074756c7b9c8c13496fe6b /sources/pyside6/libpyside/qobjectconnect.cpp | |
| parent | 15ccf2484e605a9188fc0b00a5b0ee59197f2734 (diff) | |
Fix QObject::sender() for non-C++ slots
For non-C++ slots routed via GlobalReceiverV2, sender()
of the receiving QObject returns 0. To fix this, store
the sender obtained in GlobalReceiverV2::qt_metacall()
temporarily in a special dynamic property of the receiver
and inject code checking it into QObject::sender(). This
fixes at least the synchronous calls.
Fixes: PYSIDE-2144
Fixes: PYSIDE-1295
Change-Id: Ia111162eb1404914ecfb7f19fadb8a1b63ae8b4a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/qobjectconnect.cpp')
| -rw-r--r-- | sources/pyside6/libpyside/qobjectconnect.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sources/pyside6/libpyside/qobjectconnect.cpp b/sources/pyside6/libpyside/qobjectconnect.cpp index 2d97a68d1..bdf77a18e 100644 --- a/sources/pyside6/libpyside/qobjectconnect.cpp +++ b/sources/pyside6/libpyside/qobjectconnect.cpp @@ -116,7 +116,7 @@ static GetReceiverResult getReceiver(QObject *source, const char *signal, if (result.usingGlobalReceiver) { PySide::SignalManager &signalManager = PySide::SignalManager::instance(); - result.receiver = signalManager.globalReceiver(source, callback); + result.receiver = signalManager.globalReceiver(source, callback, result.receiver); // PYSIDE-1354: Move the global receiver to the original receivers's thread // so that autoconnections work correctly. if (receiverThread && receiverThread != result.receiver->thread()) |
