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
2024-09-30wina11y: Drop "using namespace css::accessibility::AccessibleRole"Michael Weghorn
Change-Id: I7c801f3101b0d4ed642cab799d44da092faa3bc7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174279 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-30wina11y: Bridge focusable state as isMichael Weghorn
Drop all the special-casing of particular (parent) roles etc. when considering whether or not to set the focusable state. Instead, fully rely on the AccessibleStateType::FOCUSABLE state as reported by the underlying XAccessibleContext and report the IAccessible/MSAA STATE_SYSTEM_FOCUSABLE state whenever the former is set. I tend to think that if this this change results in unexpected behavior, it is likely that issues should best be fixed in the underlying XAccessibleContext implementations rather than worked around in the Windows a11y bridge. Change-Id: I6e2eee3a9cbe779de3b3d349f23efc6a68a8344b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174278 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-30wina11y: Unify handling for editable/readonly state a bitMichael Weghorn
The LABEL, STATIC and NOTIFICATION roles are used for readonly text, so if the EDITABLE state were ever set on these, that should be fixed in the underlying XAccessibleContext implementation instead of special handling to always set the readonly state in the Windows a11y bridge. Therefore, rely on the EDITABLE state not being set for these in order to report the IAccessible/MSAA STATE_SYSTEM_READONLY like for the other roles handled here. Change-Id: Ie8398ad0186d57ebf92701ab3a2c0603b50f5a2e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174277 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-30wina11y: Rename UNO_MSAA_UNMAPPING to MSAA_NO_STATEMichael Weghorn
... to make clear that this is a constant with no state set. Also, move the definition to the only source file where it's used. Change-Id: Iaaba8d7053f71c63caab57c2b692b8e5898d37cb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174276 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-30wina11y: Drop always default AccObject::InsertChild pos paramMichael Weghorn
This `pos` param never gets passed explicitly, so is always the default `LAST_CHILD`. Therefore, drop the param completely to simplify this. Change-Id: I8f51fe58b47bb2f0c18a853c81b8b6c85d4a6602 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174275 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-30wina11y: Move AccObject::GetExpandedState logic to only callerMichael Weghorn
Change-Id: I5505abf795c1133b77b9c4ec7bb762401b9a3826 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174274 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-30wina11y: Simplify AccObject::GetExpandedStateMichael Weghorn
* Drop the `isExpandable` out param that's unused at the only call site. * Use a bool return value instead of an out param for the remaining `isExpandable`. Change-Id: I2a37f0fec752f5e8e802ec781acf49035b3fbf2d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174273 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-30wina11y: sal_Bool -> boolMichael Weghorn
Change-Id: I348e293981bbaeec650a463c958c5e301a804422 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174272 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-30wina11y: Simplify AccObject::GetMSAAStateFromUNO with early returnMichael Weghorn
Change-Id: Ieeb152ac6e6ba99758fad0d202cc74614871401a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174271 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-30wina11y: Drop "using namespace css::accessibility::AccessibleStateType"Michael Weghorn
Explicitly specifying the `AccessibleStateType` namespace makes the distinction between the UNO and the IAccessible2 states clearer. Change-Id: If8dba19fa716753b1b838377546c5c810e588e5a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174270 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Drop CAccImage::GetXInterfaceMichael Weghorn
Just use the `m_xImage` member directly, as already happens just a few lines above. Change-Id: I00f7e871a2cb5eb301ba033944d8d529cc10bbae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173536 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Just assign the ReferenceMichael Weghorn
Change-Id: Ibe0e9f1c8c6838044355db987d08298b267bed64 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173535 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Rename CAccImage::{pRXImg -> m_xImage}Michael Weghorn
Adhere to naming conventions to make clearer this is a class member, and a uno::Reference. Change-Id: I804bb66d88675d1f5e7e0ee31f9244db5abf0125 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173534 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Check reference in CAccHyperLink::get_startIndexMichael Weghorn
Check the reference is valid in this method as well, just like in all of the other API methods. Change-Id: Ibb1a6a8b290ffefc502966ed0372c4e421fe68fc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173533 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: Drop CAccHyperLink::GetXInterfaceMichael Weghorn
Just consistently use the `m_xHyperlink` member directly. Change-Id: If2ac4150b5b733005b916d0c5f11e8c711d95c7e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173532 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: Just assign the ReferenceMichael Weghorn
Change-Id: I8ca9cd55723b1775284b23e13db409fc5d47005c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173531 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: Rename CAccHyperLink::{pRXLink -> m_xHyperlink}Michael Weghorn
Adhere to naming conventions to make clearer that this is a class member, and a `uno::Reference`. Change-Id: I29caf6ad2d0adcfca430df72c2638dbd4ee06f1e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173530 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: Drop CAccEditableText::GetXInterfaceMichael Weghorn
Be consistent and just use CAccEditableText::mxEditableText directly, as already happens in each of the methods just a few lines further up. Change-Id: I70637714623f0410a60778e7bc1f4b007e034ddf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173529 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Just assign the referenceMichael Weghorn
operator= knows what to do, no custom handling needed. Change-Id: I9a64cc371e5b14c146e311364d1b4212d519d746 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173528 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: Rename CAccEditableText::{pRXEdtTxt -> m_xEditableText}Michael Weghorn
Adhere to naming conventions and use a less cryptic name. Change-Id: I13ff9f515351fbbf0c749522edfb739e15626a67 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173527 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: clang-format CAccEditableText sourcesMichael Weghorn
This in particular ensures that try/catch blocks are indented by an additional level, improving readability. Change-Id: I7fd538434bd8edb5748bb551fdfd2d4966293bd3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173526 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Drop CAccValue::GetXInterfaceMichael Weghorn
Be consistent and just use the `m_xValue` member directly, as is already done elsewhere in the same methods. Change-Id: I9b7a1e91cbe224115863cde9bb8d4fed14448436 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173447 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: Prefix and rename CAccValue memberMichael Weghorn
Use m_ and x prefixes, as it's a class member and a uno::Reference. Change-Id: I3b345749c256bccb3c6c59b54eed4db8f38c5a7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173446 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Merge CAccComponent{,Base}Michael Weghorn
Merge the `CAccComponentBase` class into its only subclass `CAccComponent`. While at it, make the `m_xComponent` member private, which was previously protected for no reason anyway. Change-Id: I029348c51aefd1b7cdc3db68bac6abc31de15d61 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173445 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: clang-format AccComponent.hMichael Weghorn
... in preparation of merging `CAccComponent` and `CAccComponentBase`. Change-Id: Ic7f436ec1bf1d4cbebfe27e86a29710719a33785 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173444 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Drop CAccComponentBase::GetXInterfaceMichael Weghorn
Just use the `m_xComponent` member directly, as already happens elsewhere in these methods. Change-Id: I1f3020e568d0d9b29576d0f446dea2f159119880 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173443 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Use standard naming prefixes in CAccComponentBaseMichael Weghorn
Use an `m_ ` prefix because it's a class member, and `x` because it's a uno::Reference. Change-Id: I084f41f4bca97b39d3bf365dd9025b0a9d145d24 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173442 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Drop "//special query" commentsMichael Weghorn
It's unclear to me what these //special query comments above the null checks refer to and I find them more confusing than helpful. Remove them. Change-Id: I3a3d886a664d03ec37085e2f074928c2a3055820 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173441 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-17wina11y: Just assign the referenceMichael Weghorn
No need to manually use the pointer, and have special handling for an empty Reference. Change-Id: I414cfdccacecc79594c0bc5b57d782ea98b811fc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173440 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Drop unused CAccComponentBase::grabFocusMichael Weghorn
Accessible's `IAccessibleComponent` interface [1] has no `grabFocus` method and `CAccComponentBase::grabFocus`. Therefore, drop it. The `IAccessible` interface has an `IAccessible::accSelect` method that can be used to request focus by passing the `SELFLAG_TAKEFOCUS` flag [3], but that is implemented in `CMAccessible::accSelect`. [1] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/interface_i_accessible_component.html#a8709fdbf3f51ae079af274854a8bffd4 [2] https://learn.microsoft.com/en-us/windows/win32/api/oleacc/nf-oleacc-iaccessible-accselect [3] https://learn.microsoft.com/en-us/windows/win32/winauto/selflag Change-Id: I1ae99fdbf60aa18a041c086a73f9bd7c6a80cace Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173439 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-17wina11y: Drop unused CAccComponentBase::get_locationOnScreenMichael Weghorn
While IAccessible's `IAccessibleComponent` interface [1] has a `get_locationInParent` method and the implementation in `CAccComponent::get_locationInParent` calls the base class one, `CAccComponentBase::get_locationInParent`, there is no `IAccessibleComponent::get_locationOnScreen` equivalent, and `CAccComponentBase::get_locationOnScreen` is simply unused. Therefore, drop it. The `IAccessible` interface has a `IAccessible::accLocation` method to return the location on screen, but that is implemented in `CMAccessible::accLocation`. Therefore, drop `CAccComponentBase::get_locationOnScreen`. [1] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/interface_i_accessible_component.html#a8709fdbf3f51ae079af274854a8bffd4 [2] https://learn.microsoft.com/en-us/windows/win32/api/oleacc/nf-oleacc-iaccessible-acclocation Change-Id: I1a38844101b4eca10afdc6356c46156ad2091f82 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173438 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-12tdf#91739 wina11y: Create AccObject for parent as necessaryMichael Weghorn
In `AccObjectWinManager::InsertAccObj`, when no HWND was explicitly passed, it is attempted to retrieve the HWND from the parent's `AccObject`. If no parent AccObject exists yet, create/insert that one first. This fixes the following assert seen when using NVDA's SayAll feature to read the whole document with sample document mentioned in NVDA issue [1], also attached as attachment 196385 in tdf#91739 for reference: Assertion failed: pIAccessible && "Couldn't retrieve IAccessible object for relation target.", file C:/tools/cygwin/home/user/development/git/libreoffice/winaccessibility/source/UAccCOM/MAccessible.cxx, line 2755 It's also reproducible when manually trying to get the next flows-to relation target via NVDA's Python console when the first cell in the table has focus: >>> focus.flowsTo The issue is not reproducible when focus had been in the second cell before, as an accessible object has already been created otherwise in that case. Backtrace: 1 abort ucrtbase 0x7fff3b72286e 2 get_wpgmptr ucrtbase 0x7fff3b7241b5 3 wassert ucrtbase 0x7fff3b7244f1 4 CMAccessible::get_relationTargetsOfType MAccessible.cxx 2755 0x7fff1e028729 5 NdrSendReceive RPCRT4 0x7fff3d4ca2d3 6 NdrStubCall2 RPCRT4 0x7fff3d4625a7 7 CStdStubBuffer_Invoke combase 0x7fff3cfbc4ac 8 RoGetAgileReference combase 0x7fff3cf669c3 9 RoGetAgileReference combase 0x7fff3cf6674e 10 HSTRING_UserSize combase 0x7fff3cfbefb6 11 DllGetClassObject combase 0x7fff3cf470b3 12 CoWaitForMultipleHandles combase 0x7fff3cf6774d 13 RoGetActivatableClassRegistration combase 0x7fff3cf2eb26 14 CoGetMarshalSizeMax combase 0x7fff3cf5cfba 15 CallWindowProcW USER32 0x7fff3ccbef5c 16 DispatchMessageW USER32 0x7fff3ccbe684 17 ImplSalDispatchMessage salinst.cxx 475 0x7ffed452d378 18 ImplSalYield salinst.cxx 552 0x7ffed452da9d 19 WinSalInstance::DoYield salinst.cxx 581 0x7ffed452cfa1 20 ImplYield svapp.cxx 385 0x7ffed78befc4 21 Application::Yield svapp.cxx 474 0x7ffed78c2cd2 22 Application::Execute svapp.cxx 361 0x7ffed78bc656 23 desktop::Desktop::Main app.cxx 1691 0x7ffeecf689b7 24 ImplSVMain svmain.cxx 228 0x7ffed78d3d4c 25 SVMain svmain.cxx 261 0x7ffed78d45a2 26 soffice_main sofficemain.cxx 121 0x7ffeecfb9064 27 sal_main main.c 51 0x7ff782681013 28 main main.c 49 0x7ff78268105a 29 __scrt_common_main_seh exe_common.inl 288 0x7ff782681344 30 BaseThreadInitThunk KERNEL32 0x7fff3bb07374 31 RtlUserThreadStart ntdll 0x7fff3d85cc91 [1] https://github.com/nvaccess/nvda/issues/8152#issuecomment-2342167620 Change-Id: I246251f06d1885e0da96600ffc7dd0549854382f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173224 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-12wina11y: Drop superfluous AccObject::m_pIMAcc null checksMichael Weghorn
The `AccObject` ctor already asserts it's non-null, so there's no need to check again in various places. Change-Id: Ibba363d326198a89e391a4da54cff25c95eef776 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173223 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-12wina11y: Move var decl to first assignmentMichael Weghorn
... and rename to use the "x" prefix for this uno::Reference. Change-Id: Ibf422aa48d6fbada49975fa8c5f43ad6c4c3ddee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173222 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-12wina11y: Move var declaration to where it's assignedMichael Weghorn
... and rename the variable to use the "x" prefix in line with naming conventions. Change-Id: Ife49161162654efdf1d543909218e31e464d2fc3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173221 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-10wina11y: Drop suspicious fallthrough caseMichael Weghorn
Don't fallthrough from the `AccessibleEventId::TEXT_CHANGED` case to the `AccessibleEventId::VISIBLE_DATA_CHANGED` one. commit 3ec901fab2cb3e1a1c8222498761e72c28175bd3 Date: Wed May 25 08:38:19 2016 +0200 Mark dubious fallthrough cases as "SAL_FALLTHROUGH; //TODO ???" (in Win-only) had already added a TODO comment. The IAccessible2 IDL describes `IA2_EVENT_VISIBLE_DATA_CHANGED` like this: /** A visible data event indicates the change of the visual appearance of an accessible object. This includes for example most of the attributes available via the IAccessibleComponent interface. */ IA2_EVENT_VISIBLE_DATA_CHANGED, I see no real reason to always send that event as well when text is updated. In particular, since the description of the UNO equivalent `AccessibleEventId::VISIBLE_DATA_CHANGED` matches the IA2 one very closely, it should explicitly be sent by the corresponding XAccessible(Context) implementation in addition to the `AccessibleEventId::TEXT_CHANGED` event if there are cases where both events should actually be emitted on the platform layer rather than being implicitly added in the platform-specific a11y bridge. Change-Id: I00402e08278b0b0c70f8d784939344a952dfa668 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173120 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-09wina11y: Send IA2_EVENT_TEXT_UPDATED when text changesMichael Weghorn
When the text changes, don't only send an MSAA/IAccessible `EVENT_OBJECT_VALUECHANGE` [1] event, but also an IAccessible2 `IA2_EVENT_TEXT_UPDATED` [2] event in the Windows a11y bridge. As described at [2]: > This event indicates general text changes, i.e. changes to > text that are exposed through the IAccessibleText interface. This e.g. makes that event type be sent when the value/text in one of the editable combobox in Writer's "Formatting" toolbar changes, e.g. the font size, which exposes its current text via the IAccessibleText interface. [1] https://learn.microsoft.com/en-us/windows/win32/winauto/event-constants [2] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/_accessible_event_i_d_8idl.html#ae26846b6d521727ab696d20c3f43c0b5af9d3d9355e2cfd10b126d21513241609 Change-Id: I83d3f2299c59bd9da4246723f99d1c55a351e6d8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173080 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-09wina11y: Replace deprecated IA2_EVENT_TEXT_CHANGEDMichael Weghorn
Send `IA2_EVENT_TEXT_UPDATED instead of the deprecated `IA2_EVENT_TEXT_CHANGED` event. Quoting from the IAccessible 2 doc [1]: > IA2_EVENT_TEXT_CHANGED: Deprecated. This event is > equivalent to IA2_EVENT_TEXT_UPDATED. [1] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/_accessible_event_i_d_8idl.html#ae26846b6d521727ab696d20c3f43c0b5af9d3d9355e2cfd10b126d21513241609 Change-Id: Iec1ba33ba4591c7608438dfdf7ac597e1746fc52 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173079 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-08-30wina11y: Drop unused default params for AccObject ctorMichael Weghorn
Change-Id: I6a92f442e6540714f8f8f652d67a213e28a1f35a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172650 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-08-30wina11y: Drop always null param from AccObject ctorMichael Weghorn
The param is never explicitly passed, so is always nullptr. Change-Id: I7838a9e5e990ebef18f9f622e587aa2a64070e92 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172649 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-08-30wina11y: Drop unused AccObject::getListenerMichael Weghorn
Change-Id: I95c591e2b79e59a50671967e6ab35b384d8d6c23 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172648 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins