Details
-
Bug
-
Resolution: Fixed
-
P3: Somewhat important
-
dev
-
None
-
Debian testing, qtbase dev as of 68369237bfefc81410a0d8d7389ed5e0fba0b421
-
-
fb5ffe862 (dev), 2d3f49d79 (dev), bd0a6e830 (dev)
Description
With the QAccessible*Interface classes, Qt provides a way to expose important information on the (platform) accessibility layer which is consumed by assistive tooling like screen readers.
However, besides the information that can already be provided using these interfaces, a lot of information can currently not be made available when using Qt.
Common accessibility APIs (like ARIA, AT-SPI2 on Linux, IAccessible2 and UIA on Windows and NSAccessibility on macOS) have a concept of object properties/attributes and only a subset of these can be properly reported/exposed via the the existing Qt accessibility API.
Looking into the Core Accessibility API Mappings specification ( https://www.w3.org/TR/core-aam-1.2/ ) can give a first impression of various things that are currently not possible via the Qt APIs.
I'd therefore suggest to extend the Qt API. One possibility that seems reasonable to me would be adding a way to directly report more object attributes/properties and mapping those to the corresponding platform a11y equivalent.
I plan to come up with a potential implementation in Gerrit.
One example out of many is reporting the heading level (s. e.g. https://www.w3.org/TR/core-aam-1.2/#ariaLevelHeading for the suggested mapping of the corresponding ARIA attribute), which can be seen with the qt6-based variant of LibreOffice:
1) start the Orca screen reader
2) open attached sample document "heading.odt" in the gtk3-based LibreOffice variant
3) move the cursor between the paragraphs. -> Whenever the cursor gets moved to a heading, Orca will speak the text of the heading and the heading level, e.g. "Heading 4, heading level 4" in the sample document
4) restart LibreOffice with the qt6-based LibreOffice variant and move the cursor as described above
Actual result: Only the text and the fact that this is a heading is announced, but not what level, e.g.: "Heading 4, heading". Therefore the user lacks important information about the document structure.
As far as I can see, there no Qt API that LibreOffice could use to make that information available.