summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2022-09-09 12:20:05 +0200
committerMichael Weghorn <m.weghorn@posteo.de>2022-09-16 12:03:42 +0200
commit155e8b1683f10847ff18e75287e2466220242bb1 (patch)
tree9c674a04635cdb9557b6a1581d52da60aace571f /vcl
parent5e71ec6aa0d4f9971f5e2b6f7091d18668c2f0b9 (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.cxx15
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: