aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/qobjectconnect.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-12-08 10:12:40 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-12-12 14:25:19 +0100
commit5b5cb391ccc318128946c64154a3284ae434bf8a (patch)
treed38160374de34be9ca074756c7b9c8c13496fe6b /sources/pyside6/libpyside/qobjectconnect.cpp
parent15ccf2484e605a9188fc0b00a5b0ee59197f2734 (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.cpp2
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())