diff options
author | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2023-05-23 15:03:09 +0200 |
---|---|---|
committer | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2023-05-25 11:30:40 +0200 |
commit | c9684054553f6dd8c4ff478653d20cd7a4adba9e (patch) | |
tree | c5a6f04b9d2541a8315700a895d57f4b379ccc0a /src/dbus/qdbusabstractadaptor.cpp | |
parent | 69b69a7bccbb153d687b8cf228e3342fa305b93f (diff) |
QDBusAbstractAdaptor: Send signals using correct interface
When forwarding a signal, associate this signal with its
enclosing metaobject instead of its sender's metaobject.
Those two may be different if the signal is declared in
a base class.
Add a regression test into tst_qdbusconnection.
Fixes: QTBUG-33142
Pick-to: 6.5
Change-Id: I532ab3bb6c0671a480568f46d63fceff0c82c097
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/dbus/qdbusabstractadaptor.cpp')
-rw-r--r-- | src/dbus/qdbusabstractadaptor.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp index 77e86ed949..9da2fd3886 100644 --- a/src/dbus/qdbusabstractadaptor.cpp +++ b/src/dbus/qdbusabstractadaptor.cpp @@ -255,8 +255,8 @@ void QDBusAdaptorConnector::relay(QObject *senderObj, int lastSignalIdx, void ** // QObject signal (destroyed(QObject *)) -- ignore return; - const QMetaObject *senderMetaObject = senderObj->metaObject(); - QMetaMethod mm = senderMetaObject->method(lastSignalIdx); + QMetaMethod mm = senderObj->metaObject()->method(lastSignalIdx); + const QMetaObject *senderMetaObject = mm.enclosingMetaObject(); QObject *realObject = senderObj; if (qobject_cast<QDBusAbstractAdaptor *>(senderObj)) |