a11y atspi: Send AT-SPI signals with correct signature
The AT-SPI2 XML spec for all signals/events [1] that Qt emits
specifies the DBus arguments signature as "siiva{sv}".
Qt however was incorrectly sending arguments with an "siiv(so)"
signature instead, by sending the QSpiObjectReference as last
argument.
Fix this by sending the events with the proper signature, using an
empty QMap<QString, QVariant> for the properties (that translates
to an "a{sv}" type for DBus).
[1] 33b45aea12/xml/Event.xml
Fixes: QTBUG-130843
Change-Id: If023763626be3d17b091466b17829d62d29fdede
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit fdf87fdce1c8b926b1c1ee9254aa4b0fc1840d82)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
0c2c9ca7f4
commit
5b258d7451
@ -890,11 +890,10 @@ void AtSpiAdaptor::windowActivated(QObject* window, bool active)
|
||||
sendDBusSignal(path, ATSPI_DBUS_INTERFACE_EVENT_OBJECT ""_L1, "StateChanged"_L1, stateArgs);
|
||||
}
|
||||
|
||||
QVariantList AtSpiAdaptor::packDBusSignalArguments(const QString &type, int data1, int data2, const QVariant &variantData) const
|
||||
QVariantList AtSpiAdaptor::packDBusSignalArguments(const QString &type, int data1, int data2, const QVariant &variantData)
|
||||
{
|
||||
QVariantList arguments;
|
||||
arguments << type << data1 << data2 << variantData
|
||||
<< QVariant::fromValue(QSpiObjectReference(m_dbus->connection(), QDBusObjectPath(QSPI_OBJECT_PATH_ROOT)));
|
||||
arguments << type << data1 << data2 << variantData << QMap<QString, QVariant>();
|
||||
return arguments;
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ private:
|
||||
void setBitFlag(const QString &flag);
|
||||
|
||||
// sending messages
|
||||
QVariantList packDBusSignalArguments(const QString &type, int data1, int data2, const QVariant &variantData) const;
|
||||
static QVariantList packDBusSignalArguments(const QString &type, int data1, int data2, const QVariant &variantData);
|
||||
bool sendDBusSignal(const QString &path, const QString &interface, const QString &name, const QVariantList &arguments) const;
|
||||
QVariant variantForPath(const QString &path) const;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user