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
Pick-to: 6.8
Change-Id: If023763626be3d17b091466b17829d62d29fdede
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
bde08d7343
commit
fdf87fdce1
@ -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