Age | Commit message (Collapse) | Author |
|
Change-Id: I890ec73e30d3cc6b210903ecee29431f3cb5f635
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175979
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
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
|
|
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>
|
|
... 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
|
|
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>
|
|
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
|
|
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
|
|
Change-Id: Ic16f46b19b3478069cc9bafb4e6605f9a88733d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174319
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Change-Id: I3006690efbedd75970eea34412392a36847db8d6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174318
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Change-Id: I7c801f3101b0d4ed642cab799d44da092faa3bc7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174279
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
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>
|
|
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
|
|
... 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>
|
|
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
|
|
Change-Id: I5505abf795c1133b77b9c4ec7bb762401b9a3826
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174274
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
* 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>
|
|
Change-Id: I348e293981bbaeec650a463c958c5e301a804422
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174272
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: Ieeb152ac6e6ba99758fad0d202cc74614871401a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174271
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
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>
|
|
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>
|
|
Change-Id: Ibe0e9f1c8c6838044355db987d08298b267bed64
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173535
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
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>
|
|
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
|
|
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
|
|
Change-Id: I8ca9cd55723b1775284b23e13db409fc5d47005c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173531
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
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
|
|
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>
|
|
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
|
|
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>
|
|
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>
|
|
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
|
|
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>
|
|
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
|
|
... 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>
|
|
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>
|
|
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>
|
|
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
|
|
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>
|
|
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>
|
|
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>
|
|
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
|
|
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
|
|
... 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>
|
|
... 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
|
|
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>
|
|
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>
|
|
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
|
|
Change-Id: I6a92f442e6540714f8f8f652d67a213e28a1f35a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172650
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
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>
|
|
Change-Id: I95c591e2b79e59a50671967e6ab35b384d8d6c23
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172648
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|