/connectivity/org/

/core/atom/winaccessibility?h=master' type='application/atom+xml'/>
summaryrefslogtreecommitdiff
path: root/winaccessibility
AgeCommit message (Collapse)Author
2024-11-10com::sun::star -> cssMike Kaganski
Change-Id: I890ec73e30d3cc6b210903ecee29431f3cb5f635 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175979 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-11-07[API CHANGE] a11y: Switch AccessibleRelationType to enumMichael Weghorn
Switch css::accessibility::AccessibleRelationType from integer constants to an enum. This provides more type safety and improves the debugging experience, e.g. GDB now prints com::sun::star::accessibility::AccessibleRelationType::AccessibleRelationType_CONTENT_FLOWS_TO instead of just "2" when printing the value of a corresponding variable, so it's no longer necessary to manually look up what constant has that integer value to know what relation this refers to. offapi/com/sun/star/accessibility/AccessibleRelationType.idl had this comment: > <p>We are using constants instead of a more typesafe enum. The reason > for this is that IDL enums may not be extended. Therefore, in order to > include future extensions to the set of roles we have to use constants > here.</p> However, the a11y UNO API is internal (not published), so that shouldn't be a concern. Change-Id: I44a7d56cb085dc24effb24fcd34bb222b78ef4cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176153 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-10-19Fix typoAndrea Gelmini
Change-Id: I14b77fc81781278925d9dab0133279eaa1acb726 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175194 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2024-10-19wina11y: Mention Accessibility Insights for Windows in READMEMichael Weghorn
... as a tool that can be useful for analysis/debugging. Change-Id: I310b04abfd3cacd403e2cfafc67f2471fa673c22 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175173 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-10-19tdf#160982 wina11y: Drop extra screen reader check to enable a11y bridgeMichael Weghorn
When initializing the a11y bridge on Windows, no longer check whether the screen reader parameter `SPI_GETSCREENREADER` [1] is explicitly set or require to explicitly enable by setting an `SAL_FORCE_IACCESSIBLE2` environment variable. For performance reasons, it of course makes sense to only enable the a11y bridge when there is actually assistive technology that makes use of it. However, `ImplInitAccessBridge` already only gets called when either support for assistive technology has explicitly been enabled in the settings (i.e. in "Tools" -> "Options" -> "LibreOfficeDev" -> "Accessibility", the "Support assistive technology tools (restart required" checkbox was checked) or when a `WM_GETOBJECT` message is received, whose documentation says [2]: > Sent by both Microsoft Active Accessibility and Microsoft UI Automation > to obtain information about an accessible object contained in a server > application. > > Applications never send this message directly. Microsoft Active > Accessibility sends this message in response to calls to > AccessibleObjectFromPoint, AccessibleObjectFromEvent, or > AccessibleObjectFromWindow. However, server applications handle this > message. UI Automation sends this message in response to calls to > IUIAutomation::ElementFromHandle, ElementFromPoint, and > GetFocusedElement, and when handling events for which a client has > registered. Both of these cases (explicitly enabled, AT requests information) justify enabling the a11y bridge by themselves, so drop the extra check. Qt's UIA bridge for example also gets activated when a WM_GETOBJECT message is received [3]. This makes both, Microsoft Narrator (screen reader shipped with Windows, but which doesn't set the `SPI_GETSCREENREADER` parameter) and Microsoft Accessibility Insights for Windows (a tool for a11y analysis/debugging) work - at least to a certain degree - without having to explicitly set the environment variable `SAL_FORCE_IACCESSIBLE2`. While LibreOffice doesn't have a UIA bridge at this point in time, Windows provides an MSAA (IAccessible) to UIA proxy that provides some basic information via UIA at least, see [4]: > The LegacyIAccessible control pattern is supported by the Microsoft > Active Accessibility to Microsoft UI Automation Proxy. As expected, a breakpoint or assert in `ImplInitAccessBridge` only got hit in my testing when either an AT was active or the above-mentioned option was explicitly enabled, not otherwise when starting or using LO. [1] https://learn.microsoft.com/en-us/windows/win32/winauto/screen-reader-parameter [2] https://learn.microsoft.com/en-us/windows/win32/winauto/wm-getobject [3] https://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platforms/windows/uiautomation/qwindowsuiaaccessibility.cpp?id=e9662a4b665144a5eca418925d331024ec71fa2c#n40 [4] https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementinglegacyiaccessible Change-Id: Iddafb149b50771412ba59972d0401bada6a9f680 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175172 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-10-01wina11y: Drop duplicate handling for focusable stateMichael Weghorn
Setting the `isFocusable` var to true and calling `IncreaseState` for the focusable state further down is unnecessary, as that already happens in the line just below the variable is set. Therefore, drop this duplication. In addition, the now dropped call to `IncreaseState` should have used the UNO state, AccessibleStateType::FOCUSABLE as well, not the IAccessible state, STATE_SYSTEM_FOCUSABLE, as AccObject::IncreaseState takes the UNO state while CMAccessible::IncreaseState (called by the former) takes the IAccessible/MSAA state. The switch from the UNO to the IAccessible2 state for the param was accidently done in commit a241661862ef35774f560e4068a895dcaa6f2113 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Sep 30 13:37:14 2024 +0100 wina11y: Bridge focusable state as is Change-Id: I4b3923897444fdc75b15fe2cd9e91ba5f405507e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174341 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-10-01wina11y: Use enum class for navigation directionMichael Weghorn
Switch the `DM_NIR` enum to an enum class `NavigationDirection` and move it to MAccessible.{h,cxx} which is the only place where it's used. The param name of "flags" previously used in CMAccessible::GetNavigateChildForDM was misleading, as any of the values can only be handled exclusively. Change-Id: I39d8d6afc5c8c845b3aa0add7bd314501f4c91b1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174320 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-10-01wina11y: Drop unused definesMichael Weghorn
Change-Id: Ic16f46b19b3478069cc9bafb4e6605f9a88733d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174319 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-10-01wina11y: Drop unused includes + "using namespace"Michael Weghorn
Change-Id: I3006690efbedd75970eea34412392a36847db8d6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174318 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins