summaryrefslogtreecommitdiff
path: root/accessibility
AgeCommit message (Collapse)Author
2023-08-23tdf#99609 tdf#156473 a11y: Check whether row header existsMichael Weghorn
Don't allow using `BBINDEX_ROWHEADERBAR` as the child index unconditionally, but only if the browse box actually has a row header. An `AccessibleTabListBox` doesn't have a header and instead returns the table when requesting the child at index 1 (`BBINDEX_ROWHEADERBAR`). Now that row headers are propagated to the Windows platform accessibility layer with commit 2b30d37bd555188733a006e1a5796461ab11d326 Date: Thu Aug 3 15:48:48 2023 +0100 tdf#156473 wina11y: Fix invalid write due to row/col mismatch in place, NVDA confusingly started announcing all cells in the currently selected row as row headers for the currently selected cell in the Expert Configuration dialog, because of the table being returned without this change in place (while the cells in that table don't actually have any row headers). Related backtrace of how the table was returned for the row headers: 1 accessibility::AccessibleTabListBox::getAccessibleChild accessibletablistbox.cxx 90 0x7fffb8ab64bb 2 accessibility::AccessibleBrowseBoxTable::implGetHeaderBar AccessibleBrowseBoxTable.cxx 214 0x7fffb8a7e241 3 accessibility::AccessibleBrowseBoxTable::getAccessibleRowHeaders AccessibleBrowseBoxTable.cxx 116 0x7fffb8a7da02 4 QtAccessibleWidget::rowHeaderCells QtAccessibleWidget.cxx 1808 0x7fffe3e51e97 5 AtSpiAdaptor::tableCellInterface atspiadaptor.cpp 2801 0x7fffe2cee526 6 AtSpiAdaptor::handleMessage atspiadaptor.cpp 1450 0x7fffe2cde6ee 7 QDBusConnectionPrivate::activateObject qdbusintegrator.cpp 1416 0x7fffe14cc216 8 QDBusActivateObjectEvent::placeMetaCall qdbusintegrator.cpp 1572 0x7fffe14cceba 9 QObject::event qobject.cpp 1438 0x7fffe3621280 10 QApplicationPrivate::notify_helper qapplication.cpp 3287 0x7fffe1ba2414 11 QApplication::notify qapplication.cpp 3238 0x7fffe1ba2224 12 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1123 0x7fffe35a3c34 13 QCoreApplication::sendEvent qcoreapplication.cpp 1557 0x7fffe35a46f5 14 QCoreApplicationPrivate::sendPostedEvents qcoreapplication.cpp 1924 0x7fffe35a55b2 15 QCoreApplication::sendPostedEvents qcoreapplication.cpp 1781 0x7fffe35a4eba 16 postEventSourceDispatch qeventdispatcher_glib.cpp 240 0x7fffe39b26d3 17 ?? 0x7fffe97135b4 18 ?? 0x7fffe9716607 19 g_main_context_iteration 0x7fffe9716bfc 20 QEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 390 0x7fffe39b2f67 ... <More> Also add an assert that `AccessibleBrowseBoxTable::implGetHeaderBar` only gets called with indices for row/col header, not arbitrary integers. Change-Id: Id7ebab9bfa8a7f05cb43da1bf5756e5980f4ed20 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156012 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-23a11y: Simplify AccessibleBrowseBox::implGetHeaderBarMichael Weghorn
Use the `mxColumnHeaderBar` and `mxRowHeaderBar` members directly instead of a pointer to an `rtl::Reference` that can be either of them. Change-Id: I620c7ba92a14fad50d9371b1762b5d5ad05fd7ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156011 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-23a11y: Make AccessibleBrowseBoxBase's client ID privateMichael Weghorn
The getter and setter are only used by the class itself, not by any derived classes, and the client ID is an implementation detail, so make the methods private instead of protected. Change-Id: I380aa9848ae515b7b4ae1a727b3c5720b53250fb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156010 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-19loplugin: new global analysis locking2Noel Grandin
look for methods where we don't need to guard access to the field, because the field is never modified Change-Id: I62c33cc3f52881557515765d3733c4afc78547aa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155836 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-18tdf#156561 a11y: Don't ignore child events in AccessibleListBoxMichael Weghorn
Don't ignore the `WindowShow` and `WindowHide` child events in `AccessibleListBox::ProcessWindowChildEvent`, but let the base class implemenation handle them just like all other child events. This causes them to be forwarded as `AccessibleEventId::CHILD` events to the a11y layer, which e.g. triggers registering a11y event listeners for newly created/shown child objects in winaccessibility. This makes the announcement of sub menu entries in Calc's auto filter work even after reverting commit dc0706cabfe39ddb6ea23d60ccfb756f2b9e6efb Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Mar 15 17:00:27 2023 +0100 tdf#140762 tdf#152671 Make dock win visible before showing popup , which will be done in a follow-up commit. `AccessibleListBox` is the a11y class used for tree views in the non-gtk case (i.e. `SalInstanceTreeView`). A tree view is passed as the parent of the sub menus in the autofilter popup (s. `ScCheckListMenuControl::addSubMenuItem`), but due to ignoring the events, the submenu would not be announced by NVDA before the above-mentioned commit. The events were ignored since commit 4c01898e02d7b80f70f19de12f2598644fc421e3 Author: Vladimir Glazounov <vg@openoffice.org> Date: Mon Jan 28 13:14:03 2008 +0000 INTEGRATION: CWS tbe32 (1.2.16); FILE MERGED 2007/11/05 15:14:07 tbe 1.2.16.1: #i70908# [A11y] OOo crashes in Customize dialog - Add when large icons and A11y ONcommit 4c01898e02d7b80f70f19de12f2598644fc421e3 to fix a crash in the customization dialog, but that problem described in [1] is no longer reproducible for me with the change here in place. Comment 8 in the ticket mentions: > The problem was the accessible child event, which was sent for the > help text window. This event triggered some callbacks which caused > the dead lock. As the help text window is not exposed as accessible > child of the tree list box, I removed the accessible child event. The fact that extra children from the `vcl::Window` hierarchy (besides the entries in the `SvTreeListBox` are currently not exposed via `AccessibleListBox::getAccessibleChildCount` and `AccessibleListBox::getAccessibleChild` is still true, but not a problem in this context. (If necessary, handling for those should be easy to add by forwarding to the corresponding `VCLXAccessibleComponent` methods, and adapting the child index used as needed.) [1] https://bz.apache.org/ooo/show_bug.cgi?id=70908 [2] https://bz.apache.org/ooo/show_bug.cgi?id=70908#c8 Change-Id: If374032387babf41b28067d5df54d5f6ce682c48 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155801 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-03tdf#156473 a11y: Implement AccessibleGridControlHeader::getAccessibleCellAtMichael Weghorn
With this in place, selecting a grid control cell from the tdf#156473 example in Accerciser's treeview of the LO a11y hierarchy now shows a corresponding row and header cell. Change-Id: I89978051cdb285a02cbce7a560a788b6d24ca7ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155251 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-03tdf#156473 a11y: Use actual row/col index/count in grid control headerMichael Weghorn
The row header bar of a grid control is a table with just one column, containing a row header cell for each of the rows in the table holding the actual data. Likewise, a column header bar just has one row. This was previously incorrectly reported on the a11y layer, as could e.g. be seen in Accerciser with the sample macro from tdf#156473. Also make the `AccessibleGridControlCell` ctor pass the `_nColumnRowId` as what it actually is (a row index in case of a row header cell, a column index in case of a column header cell) instead of always as a row index, and then having special handling for that elsewhere again (s. `AccessibleGridControlCell::getAccessibleName`). Also move an assert from `AccessibleGridControlCell::getAccessibleName` to the ctor and check the indices there. With this in place, the row and column header bars for the example from tdf#156473 now report the correct amount of rows and columns, and the row/column header cells report the correct row and column indices. Change-Id: I29f71ac46b6d841e26d68ca01bd05ba9412aed13 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155224 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-02split Point/Size/Rectangle into AbsoluteScreenPixel* typesNoel Grandin
to attempt to make it obvious in code what kind of coordinate system we are dealing with. The idea is that by doing this, the compile-time type checking will flush out inconsistencies between different code. I started with vcl::Window::OutputToAbsoluteScreenPixel and worked outwards from there. Change-Id: Ia967d7a0bb38886695f3a761b85c8b9340ddb1c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154676 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-02a11y: Convert AccessibleTableControlObjType to enum classMichael Weghorn
Change-Id: I227ca242ae8fa22940b1bf302541f8d9b7b40eb7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155199 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-02tdf#156473 a11y: Properly retrireve a11y context from XAccessibleMichael Weghorn
... by using `XAccessible::getAccessibleContext` rather than trying to just query for the `XAccessibleContext` interface on the `XAccessible` object. (While in many cases, the class implementing both interfaces is the same, that doesn't have to be the case.) Change-Id: I281082672447c7bfd2812d7f3cd54c74414df66e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155193 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-02tdf#156473 a11y: Don't use selection index as child indexMichael Weghorn
`XAccessibleSelection::getSelectedAccessibleChild` takes the index into the selection, not the child index, as its documentation (in `offapi/com/sun/star/accessibility/XAccessibleSelection.idl`) says: > @param nSelectedChildIndex > This index refers only to the selected children, not to all the > children of this object. Even if all children are selected, the > indices enumerating the selected children need not be the same > as those enumerating all children. If only single selection is > supported the only valid value is 0. The previous handling here in `AccessibleGridControlTable::getSelectedAccessibleChild` was treating it as the child index, though. Therefore trying to get the selected children would break once any row other than the first was selected. Fix this by calculating the actual row/column index of the cell from the given *selection* index. This could be observed e.g. with the qt6 VCL plugin by querying selection from Accerciser, with the last row selected in the table from the tdf#156473 macro in LO and the corresponding table object selected in Accerciser's tree view of the LO a11y hierarchy: Before: In [41]: sel = acc.querySelection() In [42]: sel.nSelectedChildren Out[42]: 5 In [43]: sel.getSelectedChild(0) In [44]: sel.getSelectedChild(0) == None Out[44]: True With the fix in place: In [48]: sel = acc.querySelection() In [49]: sel.nSelectedChildren Out[49]: 5 In [50]: sel.getSelectedChild(0) Out[50]: <Atspi.Accessible object at 0x7fcaeaddb900 (AtspiAccessible at 0x3ae4a80)> In [51]: sel.getSelectedChild(0).name Out[51]: 'C1 , R4 , ' In [52]: sel.getSelectedChild(1).name Out[52]: 'C2 , R4 , ' In [53]: sel.getSelectedChild(4).name Out[53]: 'Column 5 , R4 , ' Change-Id: Id7d42a89b913d2ed101a9edb45dee5f3d870dbbd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155190 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-27tdf#155625 a11y: Notify about menu item role changeMichael Weghorn
Send a `AccessibleEventId::ROLE_CHANGED` event when the accessible role of a menu item changes (s. how `VCLXAccessibleMenuItem::getAccessibleRole` takes into account `MenuItemBits::RADIOCHECK` and `MenuItemBits::CHECKABLE` to determine the accessible role for the underlying menu entry). This fixes the issue of obsolete values for roles being used, which was uncovered by the upcoming Change-Id I1a047864ce8dc1f1bc3056ad00159f7fd5e5b7d3 ("vcl gtk3: Introduce AT-SPI2 tests for the GTK3 accessibility layer"). With this in place, the workaround for tdf#155625 in the upcoming gtk3/AT-SPI tests is no longer necessary and `make CppunitTest_vcl_gtk3_a11y` with https://gerrit.libreoffice.org/c/core/+/153069 patch set 11 still passes after dropping the workaround: diff --git a/vcl/qa/cppunit/a11y/atspi2/atspi2.cxx b/vcl/qa/cppunit/a11y/atspi2/atspi2.cxx index bbcd263fee0c..762401181bf4 100644 --- a/vcl/qa/cppunit/a11y/atspi2/atspi2.cxx +++ b/vcl/qa/cppunit/a11y/atspi2/atspi2.cxx @@ -264,9 +264,6 @@ void Atspi2TestTree::compareObjects(uno::Reference<accessibility::XAccessible> x * be represented with a round trip. */ const auto nLORole = mapToAtspiRole(xLOContext->getAccessibleRole()); auto nAtspiRole = pAtspiAccessible.getRole(); - // FIXME: workaround for https://bugs.documentfoundation.org/show_bug.cgi?id=155625 - if (nLORole == ATSPI_ROLE_CHECK_MENU_ITEM && nAtspiRole == ATSPI_ROLE_MENU_ITEM) - nAtspiRole = nLORole; CPPUNIT_ASSERT_EQUAL(nLORole, nAtspiRole); /* name (no need to worry about debugging suffixes as AccessibilityTools::nameEquals does, as * that will also be part of the name sent to ATSPI) */ Change-Id: I0d88a7eda592f5ee9abf368ce1d5feb6611b9971 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154947 Reviewed-by: Colomban Wendling <cwendling@hypra.fr> Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-27rename GetFieldRectPixelAbs to GetFieldRectPixelNoel Grandin
since it can return either absolute or relative values Change-Id: I23f2403879eded3ec4b3ca20a639ea18b28f5de9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154937 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-23cid#1539071 Division or modulo by zeroCaolán McNamara
Change-Id: Icc730f5097609a845e287e580881a8466b0b128d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154793 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-07-23vcl: Drop now unneeded DevicePoint typedefKhaled Hosny
It has been always typedef'd to basegfx::B2DPoint since: commit 5e218b5c51f7d9cd10bd9db832879efca41b9c75 Date: Wed Jan 12 21:19:32 2022 +0000 always use B2DPoint for DevicePoint Change-Id: I9f5202d5a71c77dd79f1759923917c26bf68a9af Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154632 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-07-21a11y: Don't look for grandparent when asked for parentMichael Weghorn
`AccessibleListBoxEntry::implGetParentAccessible` was first retrieving the parent, and then that one's parent, which was failing (and thus returning an empty reference) e.g. for the 2nd level items (like "2nd Reminder") in Writer's AutoText Dialog (Ctrl+F3). This resulted in Orca not announcing any such item when focused with the qt6 VCL plugin in use, because Orca considers the object a zombie due to it reporting an index of -1 in the parent. Since the parent is requested, drop one level of finding the parent (don't look for the grandparent). Also convert an `OSL_ENSURE` to a real assert so this triggers if there are still any remaining issues that need to be addressed. This makes Orca announce the item just fine and the hierarchy now looks good in Accerciser, too. (Orca announces the item's text twice for qt6 now instead of not at all, which matches the behaviour with gtk3 that's using native Gtk widgets.) With the "2nd Reminder" item selected in Accerciser's treeview of the LO a11y hierarchy: Before: In [7]: acc.get_index_in_parent() Out[7]: -1 In [8]: acc.parent In [9]: acc.parent == None Out[9]: True With the fix in place: In [11]: acc.get_index_in_parent() Out[11]: 1 In [12]: acc.parent Out[12]: <Atspi.Accessible object at 0x7f14fa3e2340 (AtspiAccessible at 0x3c09da0)> In [13]: acc.parent.name Out[13]: 'Standard' Change-Id: I2994211368508c74093b73eb8c330aa293411e0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154746 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-21a11y: Drop obsolete check for empty ReferenceMichael Weghorn
The default Reference ctor always creates an empty Reference, so checking for that here doesn't make any more sense here since commit 77ea0535271d3fb3d49c8d916ecf80e0a7f70653 Date: Wed Sep 18 15:54:23 2019 +0200 accessibility: fix leak of AccessibleListBoxEntry (`git -w shows it's only the check that was dropped besides adapting indendation accordingly.) Change-Id: I18cda45f8730b0234eed0edf31fc6e0a32b1cb9f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154745 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-21tdf#99609 a11y Set old/new value correctly in a11y event againMichael Weghorn
... after commit 7835f97113460922cfe14685baa7bcaea2de736a Date: Tue Jul 18 16:28:08 2023 +0200 add IndexHint -1 for 2 commitEvent methods in accessibility had switched from using the default AccessibleEventObject ctor and setting all of the members manually, but presumably unintentionally swapped old and new value along the way, since the ctor takes the new value as 3rd and the old value as 4th argument. I ran into this because because announcement of the items in the Expert Configuration dialog with Orca and the qt6 VCL plugin dialog no longer worked after merging commit 452c17e08fd8f18d032788170d873b019c8e9716 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Fri Jul 21 08:27:09 2023 +0200 tdf#99609 a11y: Announce the correct entry in tab list box , while it did still work with the tdf#99609 commit series on top of master just a few days old. Change-Id: I516a3067ca04b2e4a06011148ac2690bd301fefa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154719 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2023-07-21tdf#99609 a11y: Fix reporting selection in tab list table moreMichael Weghorn
Besides the issue already fixed in Change-Id I394027695616b17f7290136d8ee10c06a0282e80 ("tdf#99609 a11y: Fix reporting selection in tab list table"), the previous use of `GetEntry` here in `AccessibleTabListBoxTable` is problematic, as described for the previous uses in `SvTabListBox` and replaced in Change-Id I35f7280d2c386a9a8e04e636ebf34850a733c84a ("tdf#99609 a11y: Announce the correct entry in tab list box") and follow-up commits. Therefore, replace that here as well. Instead of having to use `SvTabListBox::GetEntryOnPos`, just use the existing `SvTabListBox` methods that already take a row index (and use `SvTabListBox::GetEntryOnPos` internally). This fixes querying the selected status of children (=cells) via the Selection interface. Sample use in Accerciser before, with the tree view in the Expert Configuration dialog selected in Accerciser's treeview of the a11y hierachy, and entry "org.openoffice.Interaction" selected in the dialog. Before: In [6]: sel = acc.querySelection() In [7]: sel.getSelectedChild(0).getIndexInParent() Out[7]: 56 In [8]: sel.isChildSelected(56) Out[8]: False In [9]: sel.selectChild(56) Out[9]: True In [10]: sel.getSelectedChild(0).getIndexInParent() Out[10]: 112 With the fix in place: In [11]: sel = acc.querySelection() In [12]: sel.getSelectedChild(0).getIndexInParent() Out[12]: 56 In [13]: sel.isChildSelected(56) Out[13]: True In [14]: sel.selectChild(56) Out[14]: True In [15]: sel.getSelectedChild(0).getIndexInParent() Out[15]: 56 In [16]: sel.selectChild(114) Out[16]: True In [17]: sel.getSelectedChild(0).getIndexInParent() Out[17]: 112 (112 instead of 114 for the index of the first selected child is OK because selecting a cell selects the whole row and child with index 112 is the first cell in the same row as the child with index 114.) Change-Id: I28cd1633dae601818e2a1d310859bd4d55d311ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154714 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-21tdf#99609 a11y: Fix reporting selection in tab list tableMichael Weghorn
The previous calculation of row and column index in `AccessibleTabListBoxTable::getSelectedAccessibleChild` based on the selection index was wrong, so fix that. Only increase the the loop variable `nRow` in `AccessibleTabListBoxTable::implGetSelRow` at the end of the loop, since the comparison still needs to use the original value. (Index starts at 0. Trying to retrieve the first selected child at index 0 would otherwise fail, and always return the fallback value of row index 0, making NVDA always announce the first row as selected instead of the actually selected one. The issue could also be observed with Accerciser and the qt6 VCL plugin. With the "org.openoffice.LDAP" row selected in the dialog, and the table object selected in Accerciser's treeview of the a11y hierarchy, the cells in the first row ("org.openoffice.VCL") would always be returned when querying the selection using the AT-SPI Selection interface: In [1]: sel = acc.querySelection() In [2]: sel.nSelectedChildren Out[2]: 4 In [3]: sel.getSelectedChild(0).name Out[3]: 'org.openoffice.VCL' This works as expected now with this fix in place: In [4]: sel = acc.querySelection() In [5]: sel.nSelectedChildren Out[5]: 4 In [6]: sel.getSelectedChild(0).name Out[6]: 'org.openoffice.LDAP' With this fix in place, NVDA now properly announces the currently focused row in the Expert Configuration dialog (i.e. both, the focused cell first, and then the whole row as selection). Change-Id: I394027695616b17f7290136d8ee10c06a0282e80 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154688 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-21tdf#99609 a11y: Set proper parent for cells in tab list boxMichael Weghorn
The a11y tree was broken: While the table has the cells as children, the cells did not have the table set as parent, but the table's header. Since the IAccessibleTableCell implementation in winaccessibility relies on the table being set as the parent, this wouldn't work when moving around within the tree view in the Expert Configuration dialog. Fix this by setting the table as parent. The issue could also be observed with the qt6 VCL plugin on Linux and Accerciser. With the table selected in Accerciser's tree view of the a11y hierarchy, the incorrect hierarchy could be seen using this in Accerciser's IPython console. In [8]: acc.childCount Out[8]: 48 In [9]: acc.get_child_at_index(4).name Out[9]: 'Migration' In [10]: acc.get_child_at_index(4).parent == acc Out[10]: False In [11]: acc.get_child_at_index(4).parent.childCount Out[11]: 4 With the fix in place, the table's child's parent is now the table again as expected: In [13]: acc.childCount Out[13]: 48 In [14]: acc.get_child_at_index(4).name Out[14]: 'Migration' In [15]: acc.get_child_at_index(4).parent == acc Out[15]: True In [16]: acc.get_child_at_index(4).parent.childCount Out[16]: 48 NVDA on Windows now announces *something* when moving between rows in the Expert Configuration dialog, but it's not the correct row yet. (That looks like another issue in winaccessibility code that needs to be fixed separately.) Change-Id: I400fa9811bb297ea7fd1accb0970811cdf11a119 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154670 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-20split GetWindowExtentsRelative asunderNoel Grandin
sometimes it returns a relative position, sometimes an absolute position. Rather have two different methods with names that match what they return. Change-Id: Ie1e73c6be1c797fd59934c96866d1fef1f972b35 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154653 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-19add IndexHint -1 for 2 commitEvent methods in accessibilityJulien Nabet
Change-Id: I3a2d4e0935d48e8d7ff57745dc05aa3e85bd0bdc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154590 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-06-29maLayoutLineToPageId and maLayoutPageIdToLine are dead.Noel Grandin
I removed the code in ImplDrawItem that added data to them, because ImplDrawItem was only ever called with bLayout with false, and removing the bLayout param removed that code. That removal happened in: commit f0f973da8560e16cba85d2c9465c3a8c4c0ebbb3 Author: Noel Grandin <noel@peralex.com> Date: Wed Mar 16 08:49:35 2016 +0200 loplugin:constantparams in vcl/ And that happened because.... I noticed that ImplPaint was only ever called with bLayout==false, which meant I removed that param and passed bLayout==false to ImplDrawItem, in: commit 911ae0aeca443fb4b5e400ae0f939567b580e443 Author: Noel Grandin <noel@peralex.com> Date: Fri Feb 26 09:36:26 2016 +0200 loplugin:unuseddefaultparams in /include/vcl which was because the last call to ImplPaint with bLayout == true was removed in: commit a6b9d9a19fb8c5c9f166682f52941aee25b89c94 Author: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> Date: Wed May 6 13:00:13 2015 +0900 refactor "TabControl" to use RenderContext Change-Id: Id234257201726de95e2c10bfacb30670123ca8a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153713 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-05-04tdf#105404 [API CHANGE] add index to accessiblity change eventNoel Grandin
Which shaves 80% off the time off breaking up a vector image on Linux. Change-Id: Id8e7daad001b6120d1fb98e382357da5b55e92ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151352 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-04-29Use getXWeak in accessibilityMike Kaganski
Change-Id: Ifd6d57bb4087e6934075ff9f0931260cb8d09328 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150830 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-04-15a11y: Send VALUE_CHANGED event for FormattedFieldMichael Weghorn
`VCLXAccessibleEdit::ProcessWindowEvent` takes care of sending a `TEXT_CHANGED` event. In the case of `SVTXAccessibleNumericField`, numeric values are handled, so send a `VALUE_CHANGED` event in addition. This makes Orca with the qt6 VCL plugin announce the new value when e.g. changing the page width using the arrow up key in the "Format" -> "Page Style" dialog. For Accerciser, an additional fix is needed so the value gets updated there in the interface view when the a11y object is selected. Pending MR: [1] [1] https://gitlab.gnome.org/GNOME/accerciser/-/merge_requests/25 Change-Id: Id911f50664df7220bc58204bc3477c5306a1da33 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150422 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-04-01use more XVclWindowPeerNoel Grandin
Rather than using it's superclass XWindowPeer and implicitly relying on it being XVclWindowPeer and casting it everywhere. Change-Id: Icfb46f3b920d00f4a167a31803a71bbb0368d05c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149894 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-03-10improve loplugin:unnecessarylockingNoel Grandin
to find more locking we can remove Change-Id: Ief7bc5ec2a1ff31f22a0ad366910b7fcc4725818 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148599 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleToolBoxItemStephan Bergmann
Change-Id: I380d8ae6dd237c0d09209c71dfdcf7b1ad995fb2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146241 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleToolBoxStephan Bergmann
Change-Id: I3b37cd67d6d32001ae6ac72f01ce156aeb93ca7e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146240 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleTextFieldStephan Bergmann
Change-Id: Ie6b9fd7d825940d090f76b23597c40d8cbbca7c8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146239 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleTabPageStephan Bergmann
Change-Id: Ia1b4df33d426265d5eb6f0b77c531ab3b53ea3d2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146238 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleTabControlStephan Bergmann
Change-Id: I9426bac6b26feaa555842142dd3ce62bbe5f4a69 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146237 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleStatusBarItemStephan Bergmann
Change-Id: I7ec38650b0ef44b59b57bd64ba74fcac918f8b6d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146236 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleScrollBarStephan Bergmann
Change-Id: I8702abb22d14eb88655a1a133ecce8140b0cd4e1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146235 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleRadioButtonStephan Bergmann
Change-Id: If07a07cf4e6fa465d1d6d3e52abe550922edeb6c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146234 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleMenuStephan Bergmann
Change-Id: Ia086713b06cd9525e5bb03e74a1908bdd6058b18 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146233 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-27Use ImplInheritanceHelper in VCLXAccessibleMenuItemStephan Bergmann
Change-Id: I0eca36225c2a43e2ba90253c013fefe43b2f29a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146232 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in VCLXAccessibleListStephan Bergmann
Change-Id: I2412ef089b5b299b131916d21afa5c5d4fd74c39 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146190 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in VCLXAccessibleHeaderBarItemStephan Bergmann
Change-Id: I18b54a3cd689aaf4870c073db8d76d41661a05c9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146189 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in VCLXAccessibleCheckBoxStephan Bergmann
Change-Id: I6cb7926db61590a356db7c55eeda94053dbf189f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146188 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in VCLXAccessibleButtonStephan Bergmann
Change-Id: Ia5c384e7ae4b78e008836fafc5433accd8489f07 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146187 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in VCLXAccessibleBoxStephan Bergmann
Change-Id: I8763463a2fd85a528870d140051dd9fb49aea608 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146186 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in SVTXAccessibleNumericFieldStephan Bergmann
Change-Id: I9d9b6a6d7cbd89983cbe803511b59226330ae9e8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146185 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in VCLXAccessibleEditStephan Bergmann
Change-Id: Ia81117c1819b4d3b5791a0d8ca66d79a26a3c9a7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146184 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in VCLXAccessibleTextComponentStephan Bergmann
Change-Id: Iad1ae727e31908949d61d32b3828a67ac74398e7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146183 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in OAccessibleMenuComponentStephan Bergmann
Change-Id: I7399a7e707d4a5915925d2e1b606ed7f6a364337 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146182 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-26Use ImplInheritanceHelper in OAccessibleMenuBaseComponentStephan Bergmann
Change-Id: I9527ea68c3fbb1637ea08cea6340b49bab9eac6b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146181 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-25Use ImplInheritanceHelper in AccessibleTabBarPageListStephan Bergmann
Change-Id: I1f03912046d94bd0e14f65310d93ec4f539fa304 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146115 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>