summaryrefslogtreecommitdiff
path: root/winaccessibility
AgeCommit message (Collapse)Author
2023-08-04tdf#156473 wina11y: Fix invalid write due to row/col mismatchMichael Weghorn
With the grid control now reporting row/column headers due to the previous tdf#156473-related commits, this copy-paste mistake in commit 8a4271e168f70f9147b567189c1770a243e7fcb1 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Fri Aug 5 09:49:02 2022 +0100 wina11y: Implement IAccessibleTableCell::get{column,row}HeaderCells was now causing hard to debug crashes when moving around in the table from the tdf#156473 sample macro with the NVDA screen reader running on Windows. Change-Id: I9fa30c1181d0fd21a85a73fd660c49667850d82b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155311 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> (cherry picked from commit 47917019999968815133f88778cb2566ffbe9cd6) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155296 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-06-14tdf#155794 winaccessibility: no SolarMutex in getAccObjectPtr()Michael Stahl
MSAAServiceImpl::getAccObjectPtr() is called when processing WM_GETOBJECT messages, and this can happen (at least when NVDA is active) during processing SendMessages. When loading a document on a non-main thread, WinSalFrame::SetTitle() calls SetWindowTextW which is equivalent to SendMessage(WM_SETTEXT), while holding SolarMutex, and if the main thread doesn't finish processing it then that's a deadlock. Introduce a new mutex in AccObjectWinManager and use it to guard the 2 members that getAccObjectPtr() reads, while keeping the rest of winaccessibility with the SolarMutex, as the UNO services may be called on any thread. This fixes part of the problem, VCL also needs to stop using SolarMutex. Change-Id: I6df5889fd76f59146b4b0b1e5f4513232f8ab867 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152957 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit ac1099443e70eefbd8fdd7dd3705fff08a9c75b8) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152985
2023-04-17loplugin:stringaddStephan Bergmann
Change-Id: Id63306a86c955c1f00252c555a6c0faaed625c7b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150481 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-03-22tdf#154303 wina11y: Don't truncate 64-bit statesMichael Weghorn
commit 8d8e6c84e512c1a8b33aac75965b84481d1a1d13 Date: Sun Jul 3 20:29:28 2022 +0200 [API CHANGE] Drop css::accessibility::XAccessibleStateSet had introduced the use of a 64-bit integer with bit flags for the accessible states. However, `AccObjectWinManager::DecreaseState` and `AccObjectWinManager::IncreaseState` were still using unsigned short, resulting in truncation. As one result, the `AccessibleEventId::STATE_CHANGED` event with state `AccessibleStateType::VISIBLE` from `OAccessibleMenuBaseComponent::SetVisible` would no longer result in the `STATE_SYSTEM_INVISIBLE` being unset and thus the the JAWS screen reader would no longer announce the focused (but considered invisible) menu item. Fix this by switching the param for those two methods to sal_Int64 as well. Change-Id: I714573e2691e82c6287a4b83f872f87568e46495 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149255 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-03-07tdf#154039 wina11y: Increase refcount for returned COM interfaceMichael Weghorn
The reference counter for the IUnknown interface of the COM object needs to be increased in `CMAccessible::get_accSelection` as well, not just in the called `CEnumVariant::Next`, because calling VariantClear` on the temporary variant afterwards decreases the ref count again. Regression from commit 00c0ee8cf0fac0c933c5ae600e99a64b1c7d4397 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Jan 31 07:41:14 2022 +0000 tdf#147083 wina11y: Return a11y object instead of child ID Change-Id: Id968c3d80b38961b836fbb1a9bd6dfeefdff813f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148393 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-01-05Revert all the recent loplugin:unocast changesStephan Bergmann
...as obsoleted by ef533553559fe09b4afab651fc692885d1acf4ed "Rudimentary support for dynamic_cast on UNO proxy objects". This reverts all of: 4cfcc9ac37b90ce64c8402a41eb4638adb185b5c "loplugin:unocast (framework::Desktop)" 03efbf72f4ddf7a84aa8aabef348331bd4b75e8a "loplugin:unocast (vclcanvas::TextLayout)" 80099fdd51a69eaa6c36ca88ef772810e4a777fa "loplugin:unocast (SalGtkXWindow)" cc147f576d8687fb79c77d47d41dc4ba1678a469 "loplugin:unocast (sdext::presenter::CachablePresenterView)" 40db42be1d8fd0f9c6c8c5ba3767ddb9ee2034c2 "loplugin:unocast (vclcanvas::CanvasFont)" 2d1e7995eae29e2826449eb5179f5fae181794a5 "loplugin:unocast (CairoColorSpace)" 4c0bbe4bd97636207cf71a6aa120c67698891da9 "loplugin:unocast (canvas::ParametricPolyPolygon)" 89803666621c07d1b1ac9d3bd883f0ca192a91a0 "loplugin:unocast (vclcanas::CanvasBitmap)" d5e0c2c8db71878d21c2a7255af08cf5f9a6dd04 "loplugin:unocast (sfx2::DigitalSignatures)" c0c4519e0d5b555f59bbc04cc616454edfd1f4ce "loplugin:unocast (VCLXAccessibleComponent)" feb8b833a6245d42400f42a0bc789dc84594ee6f "loplugin:unocast (VCLXDialog)" 1fa58cc6cc9c3849753342a5d9a6ddfa461b5e66 "loplugin:unocast (VCLXMultiPage)" f481f036deb1b1b46f3038074c4659f3a91b9c6c "loplugin:unocast (DocumentSettingsSerializer)" 73df933f5fa5932f94e5a1b338a3eda00a9ce354 "loplugin:unocast (css::embed::EmbeddedUpdate)" 420165ab0ef03c0467f9d17f504de2d2fc78f0e6 "loplugin:unocast (canvas::tools' StandardColorSpace, StandardNoAlphaColorSpace)" 9abe8ee067e6c00f19d8a13346d53c4641c27166 "loplugin:unocast (MutableTreeNode)" 9f3022ceb036f23b4b0994c3e2fbd1001bff225a "loplugin:unocast (VCLXTabPage)" 1be70dda02c12a60778b7607cff2520ae1aa611e "loplugin:unocast (vcl::unotools::VclCanvasBitmap)" d6a70bb641b96e8e5616448c2378131ed62658b4 "loplugin:unocast (basegfx::unotools::UnoPolyPolygon)" 5a14f009e6782c077463c8cbb8e9cea3d7950107 "loplugin:unocast (xmlsecurity::Certificate)" 99009c9535dfa3e0d838989ccc7d84bfa2320ff4 "loplugin:unocast (sd::Annotation)" 0c7585c5fa78887e5459885ed744e8044fd76137 "loplugin:unocast (sd::TextApiObject)" 24e14afd1bfcaed6c200ab081973fba7e47267ca "loplugin:unocast (SignatureVerifierImpl)" 1a7ad0c10d286ce9ae2700ceb2fd50eed1fb43a4 "loplugin:unocast (pcr::PropertyEventTranslation)" a97e2d2702d9a6f37775ccee2c08c4f3b2479c4b "loplugin:unocast (RangePageBreaks)" 19dfdf86ad1f5b08041d8b7a9f196caf881231ab "iloplugin:unocast (pcr::OFormattedNumericControl)" f9785ea595fd8e911f6370e836fa579225b9e571 "loplugin:unocast (frm::OInterfaceContainer)" 5e5f40a4a92a31b0932c690219d002fcf18598cf "loplugin:unocast (ScVbaShapes)" 27b35b2c215b4832d4378ec3a7ecbba926552d06 "loplugin:unocast (ScVbaShapeRange)" cb3108f860065928552a86cf8acc4b3a95718ecf "cid#1517812 Dereference null return value" feba0ddb1521d1142560fe54b7d7696ee910237f "loplugin:unocast (weld::TransportAsXWindow)" 4d6c23216559eb48f9943bb49d6e475a6d64ba15 "loplugin:unocast (oox::ForumlaImExportBase)" 4844c096a8ab6a9a620c410a0949d4499f12a504 "loplugin:unocast (cairocanvas::SurfaceProvider)" 9a0b523e0a84d403b9092176ccec4b3e3efe42d0 "loplugin:unocast (cairocanvas::CanvasBitmap)" 8a5648d8e59b4b007dbbf3824777c19a21efc61e "loplugin:unocast (cairocanvas::TextLayout)" 28c27a0623bc78a0590858f97d03b620985bc84c "loplugin:unocast (cairocanvas::CanvasFont)" 53bc223cb3288e32a417696ee61c29e5f01f209d "loplugin:unocast (cairocanvas::RepaintTarget)" 5f70b0b9f6bc4ab145ddbd9155590ed4a3b1b9ec "loplugin:unocast (SvXMLImport)" 068187a898cdd2e26e9b16c348ecc1ed2dee3f29 "loplugin:unocast (VCLXWindow)" 88b4f966202717cd4ad38a30a8eda22c3e69ed35 "loplugin:unocast (sfx2::sidebar::SidebarController)" f1b7a69b280aefe2f1b3b0f32193494fd765f2bd "loplugin:unocast (SvxLineStyleToolBoxControl)" ba76f0ba7e8de4d2953739c952004b7d9af47197 "loplugin:unocast (i18npool::Calendar_gregorian)" 840154daf934d8df52ead1cb7acd798c4d30f007 "loplugin:unocast (framework::AddonsToolBarWrapper)" b0e9c4c5f063cefa9557810e3349bdb9c7493091 "loplugin:unocast (GrammarCheckingIterator)" 8ee6cfc9655ce9de4617cea1a0d9cb9d7a4fbfac "loplugin:unocast (ucb::ucp::ext::Content)" 5b8cd77c112bc8c0e92b8fec215c3c8e802bbc0a "loplugin:unocast (basic::SfxScriptLibraryContainer)" 9e73ff9fce12e102bb3c3cea8d8bb96c88f2c9ad "loplugin:unocast (sdext::presenter::PresenterNotesView)" a98acca8fbc38d3fd5600ae5056a8e42b6d8a40d "loplugin:unocast (SelectionChangeHandler)" c0b59ad6e35b0cb0dea0821e95f95569739078c1 "Consistently use comphelper::getSomethingImpl<I>(aIdentifier, this)" 276e3ccbdd3259ec3daf8a1a98fa7f406b14e21c "loplugin:unocast (vclcanvas::RepaintTarget)" Change-Id: I37c73e3422a5154bf6cb647640d2d3f23db8bc34 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145063 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-12-23loplugin:unocast (VCLXAccessibleComponent)Stephan Bergmann
(See the upcoming commit introducing that loplugin:unocast on why such dynamic_casts from UNO types are dangerous.) Change-Id: I11496cc1d37e89ce8f11991f86c7b60bb1b93106 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144748 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-11-24Drop redundant -Wnon-virtual-dtorStephan Bergmann
Inspired by <https://gcc.gnu.org/pipermail/gcc-patches/2022-November/607102.html> "[PATCH] doc: -Wdelete-non-virtual-dtor supersedes -Wnon-virtual-dtor", drop explicitly enabling -Wnon-virtual-dtor in favor of -Wdelete-non-virtual-dtor, which is already enabled by -Wall. (-Wdelete-non-virtual-dtor first appeared in Clang 3.0, <https://github.com/llvm/llvm-project/commit/8bd428574c717e68a8274739d2ba0f6dc16fd0fb> "Add new warning that warns when invoking 'delete' on a polymorphic, non-final, class without a virtual destructor", and GCC 4.7, <https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=014ab419efc12a59efebd2720d79e1c055675c85> "invoke.texi: Document -Wdelete-non-virtual-dtor. [...]") Dropping the explicit setting of -Wnon-virtual-dtor (and nowhere setting it implicitly via -Weffc++) means we can get rid of lots of places that either set -Wno-non-virtual-dtor or use some pragma to ignore -Wnon-virtual-dtor. (In various places across extensions/source/activex/ and winaccessibility/, the commits f26996bd3398afa789a5491968244563ccf70908 "Silence -Werror,-Wnon-virtual-dtor in generated so_activex.h (clang-cl)" and c6086ca6535692496fbd718d174d8eb5a5dea7c7 "Silence -Werror,-Wnon-virtual-dtor in generated UAccCOM.h (clang-cl)" had singled out some includes to wrap them in pragmas. Now that those pragmas are gone again, move those includes back to where they had been prior to being singled out. And the -Wno-non-virtual-dtor in external/firebird/macos-arm64.patch.0 appeared first in ccd0e5f445d4a7d0e7aca6c23c02c61bf14510b2 "Make firebird build for macOS on arm64", which, though it doesn't state it explicitly, apparently created that patch's builds/posix/prefix.darwin_arm64 as a copy of firebird's already existing builds/posix/prefix.* files, which routinely include that warning option too, so keep it there too even if it is probably irrelevant throughout.) Change-Id: I7e4fa9f2c07e267b2ed15607905027f6b78142f3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143182 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-26tdf#117173 wina11y: Send EVENT_SYSTEM_ALERT when notification showsMichael Weghorn
Together with Change-Id Ifcf9304883e2e824ea1b7998d7767e474b87c8b6 ("tdf#119788 tdf#117173 add accessibility NOTIFICATION role") and Change-Id Id62b3942dc17c3a1ed6a08d23438406e5a19c39d ("tdf#117173 a11y: Send SHOWING state change event on Window{Show,Hide}"), this makes NVDA announce the notification in the Search and Replace dialog as an alert, similar to what browsers do e.g. in the alert on empty input for the input validation example at https://www.w3.org/WAI/tutorials/forms/validation/ . Change-Id: I3263df4711f84a6dd9e178aaaaad340b128aa074 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140091 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-09-26tdf#119788 tdf#117173 add accessibility NOTIFICATION roleJim Raykowski
and use it to make screen readers announce notifications from the 'Find and Replace' dialog Change-Id: Ifcf9304883e2e824ea1b7998d7767e474b87c8b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139709 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-09-17loplugin:loopvartoosmall (clang-cl)Stephan Bergmann
Change-Id: I8925e28d46f1ed983581b539cfbe6a01c034e0ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140098 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-16wina11y: Drop unused CMAccessible helper methodsMichael Weghorn
Their doc says that they are for the `accSelect` implementation, but that one doesn't actually make use of them. Change-Id: I9185a905d00484fcb950a1bdb6013e07a089bb22 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140069 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-09-10wina11y: Report actual app/toolkit name/versionMichael Weghorn
The previous way of reporting "Hannover" as app name, "3.0" as version and no toolkit name and version looks rather arbitrary. Can be queried e.g. from NVDA's Python console as follows after pressing Keypad_Insert+Ctrl+Z with any LibreOffice UI element focused: >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).appName 'Hannover' >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).appVersion '3.0' >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).toolkitName ' ' >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).toolkitVersion ' ' Report the actual app name and version. For the toolkit use "VCL" as name and the same version that LibreOffice has: >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).appName 'LibreOfficeDev' >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).appVersion '7.5' >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).toolkitName 'VCL' >>> focus.IAccessibleObject.QueryInterface(IA2.IAccessibleApplication).toolkitVersion '7.5' Change-Id: I3c6bdb79e6b945c0f9707bfa7bada0fb456d6e05 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139743 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-09-09Simplify by using replaceAll in a loop (winaccessibility/AccTextBase)Julien Nabet
Change-Id: I68c895033d26c81c76e680d2042aac941d56d213 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139707 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-02[API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bitMichael Weghorn
With 16k column support in Calc enabled by default in commit 4c5f8ccf0a2320432b8fe91add1dcadf54d9fd58 Date: Tue Mar 8 12:44:49 2022 +0100 change default Calc number of columns to 16384 (tdf#50916) , the number of Calc cells in a spreadsheet is larger than SAL_MAX_INT32, meaning that a 32-bit a11y child index is no more enough and using it resulted in integer overflows in methods handling corresponding Calc cells in the a11y layer. This e.g. had the effect of the Orca and NVDA screen readers not announcing focused or selected cells properly when their a11y child index was out of the 32-bit integer range. Switch the internal a11y child indices to 64 bit to be able to handle this properly internally. Since the platform APIs (at least AT-SPI on Linux and IAccessible2 on Windows; from what I can see LO's macOS a11y bridge doesn't directly expose the child index) are still restricted to 32 bit, larger child indices still cannot be exposed via the platform APIs. As a consequence, use of the the IAccessible2 and AT-SPI methods that use the child index remains problematic in those cases where the child index is larger. However, as an alternative to using the AT-SPI Table interface and the IAccessibleTable/ IAccessibleTable2 interfaces with the child index to retrieve information about a specific cell, both AT-SPI and IAccessible2 also provide interfaces to retrieve that information directly from the cell object (TableCell interface for AT-SPI, IAccessibleTableCell for IAccessible2). Those interfaces are already implemented/exposed for winaccessibility (s. `CAccTable`) and the qt5/qt6/kf5 VCL plugins (s. the `QAccessibleTableCellInterface` methods implemented in `QtAccessibleInterface`). With the switch to 64-bit internal a11y child indices, these now behave correctly for cells with a child index that doesn't fit into 32 bit as well. NVDA on Windows already uses the IAccessibleTableCell interface and thus announcing focused cells works fine with this change in place. Orca on Linux currently doesn't make use of the AT-SPI TableCell interface yet, but with a suggested change to do so [1], announcement of selected cells works with the qt6 VCL plugin with a current qtbase dev branch as well - when combined with the suggested changes to implement support for the AT-SPI TableCell interface in Qt [2] [3] and the LO change based on that [4] and a fix for a nullptr dereference [5]. The gtk3 VCL plugin doesn't expose the AT-SPI TableCell interface yet, but once it does so (via `AtkTableCell`), it also works with the suggested Orca change [1] in place. (Adding that is planned for an upcoming change, works with a local WIP patch.) For handling return values that are larger than what platform APIs support, the following approach has been chosen for now: 1) When the return value is for the count of (selected) children, the maximum value N supported by the platform API is returned. (This is what `ScAccessibleTableBase::getAccessibleChildCount` did previously.) The first N elements can be accessed by their actual (selection) indices. 2) When the return value is the child/cell index, -2 is returned for objects whose index is greater than the maximum value supported by the platform API. Using a non-negative value would mean that the index would refer to *another* actually existing child. A child index of -1 on the other hand tends to be interpreted as "child is invalid" or "object isn't actually a child of its (previous) parent any more)". For the Orca case, this would result in objects with a child index of -1 not being announced, as they are considered "zombies" [6]. What's still somewhat problematic is the case where more than 2^31 children are *selected*, since access to those children still happens by the index into the selection in the platform APIs, and not all selected items are accessible this way. (Screen readers usually just retrieve the first and last element from the selection and announce those.) Orca already seems to apply different handling for the case for fully selected rows and columns, so "All cells selected" or "Columns ... to ... selected" is announced just fine even if more than 2^31 cells are selected. (Side note: While Microsoft User Interface Automation - UIA - also uses 32-bit indices, it also has specific methods in the ISelectionProvider2 interface that allow to explicitly retrieve the first and last selected item, `ISelectionProvider2::get_FirstSelectedItem` and `ISelectionProvider2::get_LastSelectedItem`, but we currently don't support UIA on Windows.) Bound checks at the beginning of the methods from the `XAccessibleContext`, `XAccessibleSelection` and `XAccessibleTable` interfaces that take a child index (or in helper methods called by those) should generally already prevent too large indices from being passed to the methods in the lower layer code that take smaller integer types. Such bound checking has been been added in various places where it wasn't present yet. If there any remaining issues of this kind that show after this commit, they can probably be solved in a similar way (s.e.g. the change to `AccessibleBrowseBox::getAccessibleChild` in this commit). A few asserts were also added at places where my understanding is that values shouldn't be larger than what is supported by a called method anyway. A test case will be added in a following change. [1] https://gitlab.gnome.org/GNOME/orca/-/merge_requests/131 [2] https://codereview.qt-project.org/c/qt/qtbase/+/428566 [3] https://codereview.qt-project.org/c/qt/qtbase/+/428567 [4] https://gerrit.libreoffice.org/c/core/+/138750 [5] https://codereview.qt-project.org/c/qt/qtbase/+/430157 [6] https://gitlab.gnome.org/GNOME/orca/-/blob/82c8542002e36e0d3d918088d583162d25136143/src/orca/script_utilities.py#L5155 Change-Id: I3af590c988b0e6754fc72545918412f39e8fea07 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139258 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-09-01wina11y: Drop CEnumVariant::m_lLBound that's always 0Michael Weghorn
... and doesn't increase readability. Change-Id: I62f3b37e8b8b948600e4d5e721c67a575628f1d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139217 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-31wina11y: Drop unused member and methods related to selectionMichael Weghorn
Those were only used by `AccObjectWinManager::UpdateAccSelection`, which has been dropped in Change-Id I49bfddb636721d9142a88b7ce1eb3ee3a2f9c695 ("wina11y: Drop unused AccObjectWinManager::UpdateAccSelection"). Change-Id: I11d1ad3f01929a68e341f910ec6382f91227e3c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139124 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-31wina11y: Drop unused AccObjectWinManager::UpdateAccSelectionMichael Weghorn
It was already unused when it was added in commit a18bdb3bc05e761704cc345a66a9d642bc4f4a0a Date: Thu Nov 14 08:18:05 2013 +0000 Integrate branch of IAccessible2 `CMAccessible::get_accSelection` already queries information on demand. The dropped method looks like another one of the methods that could be used for manual bookkeeping of information instead of querying them from the underlying UNO interfaces on demand. But retrieving them on demand seems preferable, s.a. the commit message in commit fcf4a26275d7503835f9aa23cb94938809840300 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Jan 5 13:41:53 2022 +0000 tdf#146306 wina11y: Retrieve accessible desc on demand > Querying up-to-date values from the underlying > UNO interfaces on demand instead of doing extra > manual bookkeeping in the winaccessibility code > may be possible for more a11y attributes in addition > to the accessible description handled in this commit, > but each one will have to be looked at separately. Change-Id: I49bfddb636721d9142a88b7ce1eb3ee3a2f9c695 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139123 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-12Fix typoAndrea Gelmini
Change-Id: I354805dc54769cfa4564b0c1fd3be15f6c060b1d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138188 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2022-08-05wina11y: Drop unused AccessibleKey{Binding,Stroke}.idlMichael Weghorn
The only include of the generated header file `AccessibleKeyBinding.h` was in `AccActionBase.cxx`, but that doesn't make any use of what's defined in the header, so just drop the include and the unused IDL files altogether. (The IDL files are part of the winaccessibility-specific UAccCOMIDL, unrelated to the IDL files for the UNO API.) `CMAccessible::get_accKeyboardShortcut` directly operates on the `XAccessibleKeyBinding` UNO interface ever since commit a18bdb3bc05e761704cc345a66a9d642bc4f4a0a Date: Thu Nov 14 08:18:05 2013 +0000 Integrate branch of IAccessible2 Just the winaccessibility directory initially. (the commit also adding those 2 IDL files), so it's unclear to me what might have been the intended use. Change-Id: I1a08e8ea789ca92e52640a0006f20fac219f6733 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137866 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Drop unused Charset.idlMichael Weghorn
This is one of the LO- and winaccessibility-specific (i.e. not part of the UNO API and not from upstream IAccessible2) IDL files and it's unused, so drop it. Change-Id: I8802934da174dda3c8b35c39c2196a0ac14a7c1e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137865 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Fix indentation of this lineMichael Weghorn
Change-Id: I5b2344c90315aec974e27bba5e3a44e201ffc283 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137860 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Drop unused AccChildNode struct from defines.idlMichael Weghorn
Change-Id: Ia725d6655512632b78abfa4f3791406724ca29ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137859 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Drop extra location bookkeepingMichael Weghorn
The location is already retrieved on demand from the underlying `XAccessible` in `CMAccessible::accLocation` and the separately remembered location was just used as fallback in case `m_xAccessible` was not (no more) set. However, when there is no valid associated `XAccessible`, there is probably no value in returning any location anyway, so just return `S_FALSE` for that case, as other `CMAccessible` methods also do. Whether the separately remembered `m_sLocation` was up to date is also questionable, s.a. Change-Id I04d0230d3599466aaa92082caba54da22a3b1a28, "wina11y: Drop AccObjectManagerAgent::UpdateLocation". This is also in line with what's mentioned in commit fcf4a26275d7503835f9aa23cb94938809840300 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Jan 5 13:41:53 2022 +0000 tdf#146306 wina11y: Retrieve accessible desc on demand > Querying up-to-date values from the underlying > UNO interfaces on demand instead of doing extra > manual bookkeeping in the winaccessibility code > may be possible for more a11y attributes in addition > to the accessible description handled in this commit, > but each one will have to be looked at separately. Change-Id: I2fc51939a5db1896e02efacb1cf5fbc90ce87c04 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137858 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Drop AccObjectManagerAgent::UpdateLocationMichael Weghorn
That static method doesn't do anything. `_IMPL_WIN` is not defined, so the #ifdef _IMPL_WIN if( pWinManager ) pWinManager->SetLocation( pXAcc, top, left, width, height ); #endif in the method is unused. Since `CMAccessible::accLocation` already retrieves the current location from the underlying `XAccessible` on demand, I don't see a need to update the location manually in the first place, so there should be no need to enable that, code, just drop it. Also drop `AccObjectWinManager::SetLocation` which was unused since `AccObjectManagerAgent::UpdateLocation` (s. above) would have been the only call site. Change-Id: I04d0230d3599466aaa92082caba54da22a3b1a28 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137857 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Implement IAccessibleTableCell::get{column,row}HeaderCellsMichael Weghorn
This is essentially the Windows version of commit 12f96c3d0f61018cfa83c940765311aa9015f60a Author: Michael Weghorn <m.weghorn@posteo.de> Date: Thu Aug 4 13:27:32 2022 +0200 qt a11y: implement QtAccessibleWidget::{row,column}HeaderCells Tested using NVDA's Python Console as follows: 1) start LO Writer, "Table" -> "Insert Table" 2) select to create table with 2 rows, 2 columns 3) make sure "Heading" is checked, "Heading rows": 1 4) "Insert" 5) in the first row, type "First heading" into first column, "Second heading" into second column 5) start NVDA 6) move cursor to the table cell in second row first column (i.e. the cell below "Heading 1") 7) press KP_Insert+Ctrl+Z to start NVDA's Python console 8) Use NVDA's Python console to call corresponding IAccessible2 methods and check the result: >>> from IAccessibleHandler import IA2 >>> cell = focus.parent.IAccessibleObject.QueryInterface(IA2.IAccessibleTableCell) >>> cell.columnHeaderCells (<comtypes.LP_POINTER(IUnknown) object at 0x010528A0>, 2) >>> header_cell = cell.columnHeaderCells[0].contents >>> header_cell.QueryInterface(IA2.IAccessibleTableCell).columnIndex 0 >>> header_cell.QueryInterface(IA2.IAccessibleTableCell).rowIndex 0 9) Repeat steps 6-8, but now with the cursor in cell in second row, second column (i.e. the cell below "Heading 2") instead, which correctly returns the cell with row index 0 and column index 1 as header cell: >>> from IAccessibleHandler import IA2 >>> cell = focus.parent.IAccessibleObject.QueryInterface(IA2.IAccessibleTableCell) >>> cell.columnHeaderCells (<comtypes.LP_POINTER(IUnknown) object at 0x01024B70>, 2) >>> header_cell = cell.columnHeaderCells[0].contents >>> header_cell.QueryInterface(IA2.IAccessibleTableCell).columnIndex 1 >>> header_cell.QueryInterface(IA2.IAccessibleTableCell).rowIndex 0 Without this commit, this would fail like this: >>> from IAccessibleHandler import IA2 >>> cell = focus.parent.IAccessibleObject.QueryInterface(IA2.IAccessibleTableCell) >>> cell.columnHeaderCells Traceback (most recent call last): File "<console>", line 1, in <module> File "monkeyPatches\comtypesMonkeyPatches.pyc", line 32, in __call__ _ctypes.COMError: (-2147467259, 'Unspecified error', (None, None, None, 0, None)) Change-Id: I8de495ad28b2bece971fe4462e539bcc242ed440 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137847 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Implement IAccessibleTableCell::get_tableMichael Weghorn
Tested using NVDA's Python Console as follows: 1) start LO Writer, "Table" -> "Insert Table" 2) select to create table with 2 rows, 2 columns 3) make sure "Heading" is checked, "Heading rows": 1 4) "Insert" 5) in the first row, type "First heading" into first column, "Second heading" into second column 5) start NVDA 6) make sure cursor is in the first table cell ("Heading 1") 7) press KP_Insert+Ctrl+Z to start NVDA's Python console 8) Use NVDA's Python console to call the corresponding IAccessible2 methods and check the result: >>> from IAccessibleHandler import IA2 >>> cell = focus.parent.IAccessibleObject.QueryInterface(IA2.IAccessibleTableCell) >>> cell.table <POINTER(IUnknown) ptr=0x7cc5b24 at 13f3850> >>> cell.table.QueryInterface(IA2.IAccessibleTable) <POINTER(IAccessibleTable) ptr=0x378d47c at 13f38f0> >>> cell.table.QueryInterface(IA2.IAccessibleTable).nRows 2 >>> cell.table.QueryInterface(IA2.IAccessibleTable).nColumns 2 Without this commit in place, this would fail as follows: >>> from IAccessibleHandler import IA2 >>> cell = focus.parent.IAccessibleObject.QueryInterface(IA2.IAccessibleTableCell) >>> cell.table Traceback (most recent call last): File "<console>", line 1, in <module> File "monkeyPatches\comtypesMonkeyPatches.pyc", line 32, in __call__ _ctypes.COMError: (-2147467259, 'Unspecified error', (None, None, None, 0, None)) Change-Id: I67b84f1fd9d397a3aa40b5336c3baafad35eec29 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137846 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-05wina11y: Implement IAccessibleTableCell:get_rowColumnExtentsMichael Weghorn
The doc says [1]: > Gets the row and column indexes and extents of this cell accessible and > whether or not it is selected. > > This is a convenience function. It is not mandatory to implement it. Just use the existing methods to retrieve the information. [1] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/interface_i_accessible_table_cell.html#a686348f0b7ecae19d4be5d7ef37ff201 Change-Id: If009c3913e6e837317255266251bd7696d423118 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137845 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-07-08[API CHANGE] Drop css::accessibility::XAccessibleStateSetNoel Grandin
which is internal API, unused (as far as I can tell) by external users. This state is purely a bitset (as implemented by utl::AccessibleStateSetHelper) so we can just return it as a 64-bit value. This shaves significant time off the performance profiles of code that loads very complex shapes, because this state is frequently used, and we no longer need to allocate a return value on the heap for every call. Change-Id: Icf1b3bd367c256646ae9015f9127025f59459c2c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136786 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-15wina11y: Drop implemenation for obsolete IAccessible::put_accNameMichael Weghorn
Just return `E_NOTIMPL`, as the `IAccessible::put_accName` doc now says [1]: > The IAccessible::put_accName method is no longer supported. Client > applications should use a control-specific workaround, such as the > SetWindowText function. Servers should return E_NOTIMPL. [1] https://docs.microsoft.com/en-us/windows/win32/api/oleacc/nf-oleacc-iaccessible-put_accname Change-Id: I4b36b6a4c4215f237ba7e7583d2f130e8d80f200 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135903 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-05-03Just use Any ctor instead of makeAny in winaccessibilityStephan Bergmann
Change-Id: I402a77499daaa1a08beca8165199f266733aa1d6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133712 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-24loplugin:stringviewparamStephan Bergmann
Change-Id: If67d685eb930a299587a711eb5f77cbe9fd0ca09 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132020 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-23Drop ENTER/LEAVE_PROTECTED_BLOCK and ISDESTROY macrosMike Kaganski
... that created some local language dialect. Mostly an automatic rewrite, with clang-format applied where it is unavoidable. Change-Id: Ibc24d00f6e80000320fa9bfb35ee16add0f714cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131961 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-03-23Drop SAFE_SYSFREESTRING macroMike Kaganski
It is simply useless, and in vast majority of cases, it simply nullified variables immediately before assigning them new values. Change-Id: Ibdad31229069d3cc7000624d5fca372472e8b59c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131955 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-03-22wina11y: Slightly clean up WinResIDGeneratorMichael Weghorn
Changes: * drop the optional `maxNum` param for the constructor, it's never set to anything different than the default value * store negative number in member (renamed from `max` to `m_nMin`) instead of storing positive number and inverting that when returning it in `ResIDGenerator::GenerateNewResID` * Use -1 as the first resource ID instead of -2. Also, add a comment that negative child IDs are used because it's common to use such ones to indicate unique resource IDs in IAccessible2. Quoting James Teh's comment on an NVDA pull request of mine [1]: > The use of negative child ids doesn't fit well into the IAccessible > spec, but it has been done by IAccessible2 for a very long time and > should be considered standard for all intents and purposes. A negative > child id should be treated as a unique id, while a positive child id > should be treated as a child index. > > That said, as noted in #13277 (comment), IAccessible2 elements are > always full IAccessible objects, not "simple elements". Thus, anything > that returns an accessible (including accSelection) really should return > an object pointer. In the case of accSelection, this means VT_DISPATCH > for a single selection or VT_UNKNOWN and iEnumVARIANT (with VT_DISPATCH > elements) for multiple selection. > > In short, NVDA supporting negative child ids returned from accSelection > isn't necessarily "wrong", but ideally, LibreOffice would be fixed to > return full objects. The latter (returning full objects) has already been addressed in commit 00c0ee8cf0fac0c933c5ae600e99a64b1c7d4397 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Jan 31 07:41:14 2022 +0000 tdf#147083 wina11y: Return a11y object instead of child ID but a unique ID is still relevant, s. e.g. the documentation of `IAccessible2::uniqueID` [2], which also mentions potential ways to implement unique IDs: > One means of implementing this would be to create a factory with a 32 > bit number generator and a reuse pool. The number generator would emit > numbers starting at 1. Each time an object's life cycle ended, its > number would be saved into a reuse pool. The number generator would be > used whenever the reuse pool was empty. > > Another way to create a unique ID is to generate it from a pointer > value, e.g. an object's address. That would be unique because no two > active objects can use the same allocated memory space. The first approach is what the LO implementation currently does, except that negative numbers are used. [1] https://github.com/nvaccess/nvda/pull/13277#issuecomment-1024622871 [2] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/interface_i_accessible2.html#aac1342376cf195a6a6e9ee3b7e30ae3b Change-Id: I6c0a6c4a4e3a69396205fe2d69cd66af6525a273 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131927 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-03-02wina11y: Simplify this loop a bitMichael Weghorn
Use a range-based for loop, `OUString::isEmpty` instead of checking the length and combine the two conditions into one. Change-Id: Iddc75369b1600f2f540f7ec4a6f8ed0b8462fd93 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130841 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-03-01wina11y: Use range-based forMichael Weghorn
Change-Id: Ie03126205d45ad2fcae14af53ab7a499f3c445f9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130759 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-03-01wina11y: Use more range-based forMichael Weghorn
And use const reference to css::style::TabStop instead of creating a copy. Change-Id: I4092cbefcfbdaa6a6697974b7f40242e26cc6aad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130758 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-03-01wina11y: Use 'std::vector::empty()' instead of 'std::vector::size() == 0'Michael Weghorn
Change-Id: Icc365bad285d99abc2a1c9f26997e28701823262 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130757 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-03-01wina11y: Use range-based forMichael Weghorn
Change-Id: Icf2a4cb3a4baf0c7aaeb627d05ba355f238b4d04 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130756 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-02-28Fix typoAndrea Gelmini
Change-Id: I9502432260287ae0e6d17231c60f34b4ae2e3729 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130722 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-02-28wina11y: Drop another 'using' directiveMichael Weghorn
This is similar to Change-Id: If4b295548468067c65afcd1a216d29cad9e0c213 ("wina11y: Unify how AccessibleRole is referred to here"), just for `AccessibleStateType`. Change-Id: I5e99fad42dab87e0e303e5a08c610f6af77641ed Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130700 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-02-28wina11y: Unify how AccessibleRole is referred to hereMichael Weghorn
Using using namespace com::sun::star::accessibility::AccessibleRole; and then case /*AccessibleRole::*/DIALOG looks a bit odd. Drop the `using` directive and consistently use `AccessibleRole::<ROLE>` across this source file when referring to `AccessibleRole`s. Change-Id: If4b295548468067c65afcd1a216d29cad9e0c213 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130699 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-02-28wina11y: Rename IsSpecialToolboItem -> IsSpecialToolbarItemMichael Weghorn
Change-Id: I972a65783fcb481e91db68e6e58124d46f78ee66 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130698 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-02-28wina11y: Convert unomsaaevent.hxx constants to enum class UnoMSAAEventMichael Weghorn
Also drop the previous comments for the constants that add little value and are partially outdated. See the actual implementation to see how values are mapped to send out actual MSAA events, e.g. the previous comment // CARET_CHANGED --> EVENT_OBJECT_LOCATIONCHANGED was no longer correct by now, since that is by now mapped to `IA2_EVENT_TEXT_CARET_MOVED` in `AccObjectWinManager::NotifyAccEvent`. Change-Id: I38111ccb60c06f73ce53b18a6ca32e13dbd629b8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130697 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-02-28wina11y: Drop useless #ifdef blockMichael Weghorn
`ACC_DEBUG` isn't defined anywhere and the `pFile` variable/member used inside of the `ifedf`ed block doesn't exist either. Change-Id: I0d04ca71dbc9a731a6673fad9b69c1229c472d16 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130696 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-02-08loplugin:nullptrStephan Bergmann
Change-Id: I134ca6b0e69124739b734dfb49763da4284f7412 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129652 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-01-31tdf#147083 wina11y: Return a11y object instead of child IDMichael Weghorn
Quoting MSAA doc about implementing child IDs [1]: > # How Servers Implement Child IDs > > Server developers can assign child IDs to both simple elements and > accessible objects. However, the recommended approach is to support the > standard Component Object Model (COM) interface IEnumVARIANT in every > accessible object that has children. > > If you implement IEnumVARIANT, you must: > > * Enumerate all children, both simple elements and accessible objects. > Provide child IDs for all simple elements and provide the IDispatch to > each accessible object. > * For accessible objects, set the vt member of the VARIANT to > VT_DISPATCH. The pdispVal member must contain a pointer to the IDispatch > interface. Note that the VARIANT is allocated and freed by the client. > * For simple elements, the child ID is any 32-bit positive integer. > Note that zero and negative integers are reserved by Microsoft Active > Accessibility. Set the VARIANT structure vt member to VT_I4 and the lVal > member to the child ID. > > If you do not support IEnumVARIANT, you must assign child IDs and > number the children in each object sequentially starting with one. So far, LibreOffice was returning negative "child IDs" instead of pointers to accessible objects, which were not conformant to the MSAA specification and not accepted by NVDA as valid child IDs (s.a. discussion on the first version of my related NVDA pull request to fix the announcement of a single selected cell in Calc, [2]). Adapt that to return pointers to accessible objects and drop the now unused 'CMAccessible::Get_XAccChildID'. [1] https://docs.microsoft.com/en-us/windows/win32/winauto/how-servers-implement-child-ids [2] https://github.com/nvaccess/nvda/pull/13277 Change-Id: I52a6f637adf334dee66627e6992451e6d81a7c9a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129201 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-01-31wina11y: Drop unnecessary reinterpret_castMichael Weghorn
'IMAccessible' derives from 'IAccessible2', which in turn derives from 'IAccessible', so there's no need for any explicit cast from 'IMAccessible*' to 'IAccessible*'. Change-Id: Id5ad2d778f040364a1a056916a0ad1fe306707e8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129200 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-01-12-Werror,-Wunused-parameterStephan Bergmann
...since fcf4a26275d7503835f9aa23cb94938809840300 "tdf#146306 wina11y: Retrieve accessible desc on demand" Change-Id: I8acdca5fac481ca7b970fb9c3660470c5febdf99 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128307 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>