diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2022-09-09 12:20:05 +0200 |
---|---|---|
committer | Michael Weghorn <m.weghorn@posteo.de> | 2022-09-16 12:03:42 +0200 |
commit | 155e8b1683f10847ff18e75287e2466220242bb1 (patch) | |
tree | 9c674a04635cdb9557b6a1581d52da60aace571f /vcl | |
parent | 5e71ec6aa0d4f9971f5e2b6f7091d18668c2f0b9 (diff) |
tdf#117173: qt a11y: Forward changes to SHOWING state
While Qt doesn't have an equivalent state for the SHOWING
state used in LibreOffice and in IAccessible2, it has
separate `QAccessible::ObjectHide` and `QAccessible::ObjectShow`
event types used to indicate that an object changed state
to being (no longer) displayed, so use those.
In fact, Qt's `AtspiAdaptor` handles those by mapping them to
state change events for the AT-SPI "showing" state again. [1]
[1] https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/accessible/linux/atspiadaptor.cpp?id=ce16eb2679f69b28d2debd1ce18a99f7279b4295#n896
Change-Id: Iae2b9ec26403d9a9887e86c4155ba64a73f19b60
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139812
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/qt5/QtAccessibleEventListener.cxx | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/vcl/qt5/QtAccessibleEventListener.cxx b/vcl/qt5/QtAccessibleEventListener.cxx index 16a5a074b8cb..f9a4d7b1a2c1 100644 --- a/vcl/qt5/QtAccessibleEventListener.cxx +++ b/vcl/qt5/QtAccessibleEventListener.cxx @@ -132,6 +132,20 @@ void QtAccessibleEventListener::HandleStateChangedEvent( case AccessibleStateType::SELECTED: aState.selected = true; break; + case AccessibleStateType::SHOWING: + { + // Qt does not have an equivalent for the SHOWING state, + // but has separate event types + QAccessible::Event eEventType; + sal_Int64 nNewState = 0; + if ((rEvent.NewValue >>= nNewState) && nNewState == AccessibleStateType::SHOWING) + eEventType = QAccessible::ObjectShow; + else + eEventType = QAccessible::ObjectHide; + QAccessible::updateAccessibility( + new QAccessibleEvent(pQAccessibleInterface, eEventType)); + break; + } // These don't seem to have a matching Qt equivalent case AccessibleStateType::ARMED: case AccessibleStateType::DEFUNC: @@ -141,7 +155,6 @@ void QtAccessibleEventListener::HandleStateChangedEvent( case AccessibleStateType::MANAGES_DESCENDANTS: case AccessibleStateType::OPAQUE: case AccessibleStateType::SENSITIVE: - case AccessibleStateType::SHOWING: case AccessibleStateType::STALE: case AccessibleStateType::TRANSIENT: case AccessibleStateType::VERTICAL: |