vcl/qt5/QtAccessibleEventListener.cxx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
New commits: commit 155e8b1683f10847ff18e75287e2466220242bb1 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Sep 9 12:20:05 2022 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Fri Sep 16 12:03:42 2022 +0200 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.wegh...@posteo.de> 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: