summaryrefslogtreecommitdiff
path: root/sc/source/ui/Accessibility
AgeCommit message (Collapse)Author
2024-12-04Move helpers for css::awt/VCL point/rect/size to vcl::unohelperMichael Weghorn
Move helpers to convert between the Rectangle, Point and Size classes in vcl and in css::awt from VCLUnoHelper (in the toolkit module) to vcl::unohelper (in the vcl module), for reuse in vcl in upcoming commits. Change-Id: I7b11c8a6b8c843a01ce25b1e4c0fb1869ad1e6ee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177816 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-11-30cid#1608320 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1607135 COPY_INSTEAD_OF_MOVE Change-Id: If8f36744c53bb0515516a23589ffdb389aaec02c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177592 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-11-28sc a11y: Make 2 members non-mutableMichael Weghorn
... and use a non-const pointer when iterating instead. Change-Id: I165b0ce907cadacc76562bff974ff913a3a711da Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177480 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-11-24Turn SC_MOD macro to a functionMike Kaganski
Change-Id: I5fc11037902bc6200fdaf4749260efe8e658bdce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177070 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-11-23Reduce copying of ScEditEngineDefaulter's SfxItemSetMike Kaganski
Change-Id: Ifea96f2cf586b4e5b63761e2f03944dade764430 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177073 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2024-11-07loplugin:passstuffbyref in scNoel Grandin
Change-Id: Ic3ce1406aa2567ca676bb8f431c52f590fadaec6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176198 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-11-07[API CHANGE] a11y: Switch AccessibleRelationType to enumMichael Weghorn
Switch css::accessibility::AccessibleRelationType from integer constants to an enum. This provides more type safety and improves the debugging experience, e.g. GDB now prints com::sun::star::accessibility::AccessibleRelationType::AccessibleRelationType_CONTENT_FLOWS_TO instead of just "2" when printing the value of a corresponding variable, so it's no longer necessary to manually look up what constant has that integer value to know what relation this refers to. offapi/com/sun/star/accessibility/AccessibleRelationType.idl had this comment: > <p>We are using constants instead of a more typesafe enum. The reason > for this is that IDL enums may not be extended. Therefore, in order to > include future extensions to the set of roles we have to use constants > here.</p> However, the a11y UNO API is internal (not published), so that shouldn't be a concern. Change-Id: I44a7d56cb085dc24effb24fcd34bb222b78ef4cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176153 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-11-06cid#1556442 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1607753 COPY_INSTEAD_OF_MOVE cid#1554790 COPY_INSTEAD_OF_MOVE cid#1556463 COPY_INSTEAD_OF_MOVE cid#1554838 COPY_INSTEAD_OF_MOVE cid#1556231 COPY_INSTEAD_OF_MOVE cid#1556878 COPY_INSTEAD_OF_MOVE cid#1554913 COPY_INSTEAD_OF_MOVE cid#1558064 COPY_INSTEAD_OF_MOVE cid#1557043 COPY_INSTEAD_OF_MOVE cid#1556985 COPY_INSTEAD_OF_MOVE cid#1556766 COPY_INSTEAD_OF_MOVE cid#1557351 COPY_INSTEAD_OF_MOVE cid#1554863 COPY_INSTEAD_OF_MOVE cid#1556764 COPY_INSTEAD_OF_MOVE cid#1556279 COPY_INSTEAD_OF_MOVE cid#1555970 COPY_INSTEAD_OF_MOVE cid#1556942 COPY_INSTEAD_OF_MOVE cid#1557964 COPY_INSTEAD_OF_MOVE cid#1555166 COPY_INSTEAD_OF_MOVE cid#1556496 COPY_INSTEAD_OF_MOVE cid#1557175 COPY_INSTEAD_OF_MOVE cid#1558054 COPY_INSTEAD_OF_MOVE cid#1557392 COPY_INSTEAD_OF_MOVE cid#1557850 COPY_INSTEAD_OF_MOVE cid#1555118 COPY_INSTEAD_OF_MOVE cid#1557131 COPY_INSTEAD_OF_MOVE cid#1556614 COPY_INSTEAD_OF_MOVE cid#1609650 COPY_INSTEAD_OF_MOVE cid#1555114 COPY_INSTEAD_OF_MOVE cid#1555241 COPY_INSTEAD_OF_MOVE cid#1555442 COPY_INSTEAD_OF_MOVE cid#1556473 COPY_INSTEAD_OF_MOVE cid#1557654 COPY_INSTEAD_OF_MOVE cid#1554689 COPY_INSTEAD_OF_MOVE cid#1556316 COPY_INSTEAD_OF_MOVE cid#1557929 COPY_INSTEAD_OF_MOVE cid#1554807 COPY_INSTEAD_OF_MOVE cid#1554858 COPY_INSTEAD_OF_MOVE cid#1555103 COPY_INSTEAD_OF_MOVE cid#1555517 COPY_INSTEAD_OF_MOVE cid#1556424 COPY_INSTEAD_OF_MOVE cid#1557252 COPY_INSTEAD_OF_MOVE cid#1557566 COPY_INSTEAD_OF_MOVE cid#1608020 COPY_INSTEAD_OF_MOVE cid#1557742 COPY_INSTEAD_OF_MOVE cid#1555884 COPY_INSTEAD_OF_MOVE cid#1554809 COPY_INSTEAD_OF_MOVE cid#1555336 COPY_INSTEAD_OF_MOVE cid#1555173 COPY_INSTEAD_OF_MOVE cid#1556067 COPY_INSTEAD_OF_MOVE cid#1557040 COPY_INSTEAD_OF_MOVE cid#1556235 COPY_INSTEAD_OF_MOVE cid#1557366 COPY_INSTEAD_OF_MOVE cid#1555910 COPY_INSTEAD_OF_MOVE cid#1556716 COPY_INSTEAD_OF_MOVE cid#1558022 COPY_INSTEAD_OF_MOVE cid#1555769 COPY_INSTEAD_OF_MOVE cid#1555940 COPY_INSTEAD_OF_MOVE cid#1557077 COPY_INSTEAD_OF_MOVE cid#1555270 COPY_INSTEAD_OF_MOVE cid#1555660 COPY_INSTEAD_OF_MOVE cid#1556302 COPY_INSTEAD_OF_MOVE cid#1555678 COPY_INSTEAD_OF_MOVE cid#1556538 COPY_INSTEAD_OF_MOVE cid#1557689 COPY_INSTEAD_OF_MOVE cid#1555009 COPY_INSTEAD_OF_MOVE cid#1555433 COPY_INSTEAD_OF_MOVE cid#1555671 COPY_INSTEAD_OF_MOVE cid#1555255 COPY_INSTEAD_OF_MOVE cid#1557681 COPY_INSTEAD_OF_MOVE cid#1557512 COPY_INSTEAD_OF_MOVE cid#1554958 COPY_INSTEAD_OF_MOVE cid#1555758 COPY_INSTEAD_OF_MOVE cid#1555597 COPY_INSTEAD_OF_MOVE cid#1558040 COPY_INSTEAD_OF_MOVE cid#1556476 COPY_INSTEAD_OF_MOVE cid#1557646 COPY_INSTEAD_OF_MOVE cid#1557950 COPY_INSTEAD_OF_MOVE cid#1557019 COPY_INSTEAD_OF_MOVE cid#1557885 COPY_INSTEAD_OF_MOVE cid#1556402 COPY_INSTEAD_OF_MOVE cid#1557906 COPY_INSTEAD_OF_MOVE cid#1556619 COPY_INSTEAD_OF_MOVE cid#1554683 COPY_INSTEAD_OF_MOVE cid#1556549 COPY_INSTEAD_OF_MOVE cid#1554747 COPY_INSTEAD_OF_MOVE cid#1554929 COPY_INSTEAD_OF_MOVE cid#1555362 COPY_INSTEAD_OF_MOVE cid#1557053 COPY_INSTEAD_OF_MOVE cid#1557891 COPY_INSTEAD_OF_MOVE cid#1555043 COPY_INSTEAD_OF_MOVE cid#1555107 COPY_INSTEAD_OF_MOVE cid#1557203 COPY_INSTEAD_OF_MOVE cid#1556728 COPY_INSTEAD_OF_MOVE cid#1557773 COPY_INSTEAD_OF_MOVE cid#1556845 COPY_INSTEAD_OF_MOVE Change-Id: I001fb67e597b096e992fd8a0cd6f3ec577767c33 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176098 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-10-29tdf#42982 Improve UNO API error reportingOromidayo Owolabi
Add more information to UNO API error reporting in AccessibleDocument.cxx. Change-Id: I411df5c5e3eb69fcc045c92453aa3c37111145f9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175331 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org> Tested-by: Hossein <hossein@libreoffice.org>
2024-10-22cid#1545605 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1545841 COPY_INSTEAD_OF_MOVE cid#1554682 COPY_INSTEAD_OF_MOVE cid#1554686 COPY_INSTEAD_OF_MOVE cid#1554715 COPY_INSTEAD_OF_MOVE cid#1554750 COPY_INSTEAD_OF_MOVE cid#1554759 COPY_INSTEAD_OF_MOVE cid#1554770 COPY_INSTEAD_OF_MOVE cid#1554779 COPY_INSTEAD_OF_MOVE cid#1554794 COPY_INSTEAD_OF_MOVE cid#1554800 COPY_INSTEAD_OF_MOVE cid#1554826 COPY_INSTEAD_OF_MOVE cid#1554836 COPY_INSTEAD_OF_MOVE cid#1554862 COPY_INSTEAD_OF_MOVE cid#1554865 COPY_INSTEAD_OF_MOVE cid#1554872 COPY_INSTEAD_OF_MOVE cid#1554883 COPY_INSTEAD_OF_MOVE cid#1554906 COPY_INSTEAD_OF_MOVE cid#1554921 COPY_INSTEAD_OF_MOVE cid#1554926 COPY_INSTEAD_OF_MOVE cid#1554946 COPY_INSTEAD_OF_MOVE cid#1554956 COPY_INSTEAD_OF_MOVE cid#1554970 COPY_INSTEAD_OF_MOVE cid#1554986 COPY_INSTEAD_OF_MOVE cid#1554991 COPY_INSTEAD_OF_MOVE cid#1555013 COPY_INSTEAD_OF_MOVE cid#1555037 COPY_INSTEAD_OF_MOVE cid#1555050 COPY_INSTEAD_OF_MOVE cid#1555057 COPY_INSTEAD_OF_MOVE cid#1555066 COPY_INSTEAD_OF_MOVE cid#1555067 COPY_INSTEAD_OF_MOVE cid#1555083 COPY_INSTEAD_OF_MOVE cid#1555097 COPY_INSTEAD_OF_MOVE cid#1555135 COPY_INSTEAD_OF_MOVE cid#1555140 COPY_INSTEAD_OF_MOVE cid#1555146 COPY_INSTEAD_OF_MOVE cid#1555148 COPY_INSTEAD_OF_MOVE cid#1555149 COPY_INSTEAD_OF_MOVE cid#1555155 COPY_INSTEAD_OF_MOVE cid#1555157 COPY_INSTEAD_OF_MOVE cid#1555168 COPY_INSTEAD_OF_MOVE cid#1555195 COPY_INSTEAD_OF_MOVE cid#1555196 COPY_INSTEAD_OF_MOVE cid#1555237 COPY_INSTEAD_OF_MOVE Change-Id: I90531c19c28dca77fe99c72efdfc0972c311da98 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175377 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-10-18tdf#163486: PVS: redundant nullptr checkXisco Fauli
V668 There is no sense in testing the 'mpMarkedRanges' pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error. V668 There is no sense in testing the 'mpMarkedRanges' pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error. Change-Id: Iba55f15534cdc9af5b86b288b5c42702ad83dc26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175107 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
2024-09-13tdf#161444 sc a11y: Send focused event when switching sheetsMichael Weghorn
When switching to another spreadsheet table in Calc (e.g. using Ctrl+Tab or Ctrl+PageUp), send an `AccessibleEventId::STATE_CHANGED` for the `FOCUSED` state of the newly active/focused sheet before sending an `ACTIVE_DESCENDANT_CHANGED` event for the currently active cell in that sheet. Call `ScAccessibleSpreadsheet::GotFocus` instead of `ScAccessibleSpreadsheet::FireFirstCellFocus` to achieve that, which takes care of both events. With that in place, the corresponding events when using the gtk3 VCL plugin now are shown as expected in Accerciser's event monitor: 86.3 object:children-changed:remove(0, 0, [table | Sheet Sheet2]) source: [document spreadsheet | Untitled 1 - LibreOfficeDev Spreadsheets] application: [application | soffice] 86.3 object:children-changed:add(0, 0, [table | Sheet Sheet3]) source: [document spreadsheet | Untitled 1 - LibreOfficeDev Spreadsheets] application: [application | soffice] 86.3 object:state-changed:focused(1, 0, 0) source: [table | Sheet Sheet3] application: [application | soffice] 86.3 object:active-descendant-changed(212998, 0, [table cell | G14]) source: [table | Sheet Sheet3] application: [application | soffice] This however still doesn't make Orca as of commit 6f6e0f79ff5d8669591c7c19ecdaca5ec45ab67d, i.e. the commit prior to the Orca-side workaround [1] commit 4ead75fdaebdde60535cfbadca108ccaeeeb9401 Author: Joanmarie Diggs <jdiggs@igalia.com> Date: Thu Sep 12 19:56:48 2024 +0200 Hack around https://bugs.documentfoundation.org/show_bug.cgi?id=161444 Because removing workarounds is regressing the end user experience, add the following hack: When we receive an active descendant event from LO, and the event source is not an ancestor of the current focus: 1. Silently set the locus of focus to the parent of the event source. Otherwise we'll be super chatty in response to the next item. 2. Non-silently set the locus of focus to the event source. This will cause us to present the sheet name. 3. Allow the default script to do its thing which will set the locus of focus to the cell with the common ancestor being the table and thus it will not be double-spoken. speak the newly active sheet before announcing the cell, but still requires further changes on Orca side, s. discussion in tdf#161444 and attached Orca diff there. [1] https://gitlab.gnome.org/GNOME/orca/-/commit/4ead75fdaebdde60535cfbadca108ccaeeeb9401 Change-Id: I699258ba395dd212fa45c7d1546b26a7c241db97 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173331 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-09-04use less dynamic_cast when broadcasting SfxHint in scNoel Grandin
Change-Id: I25ee079b5b14f82012f868ae6b348fa6982571a6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172853 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-09-04make ScAccWinFocusLostHint and siblings final classesNoel Grandin
that all directly extend SfxHint, as a precursor to use more SfxHintId to avoid dynamic_cast Change-Id: I35d908740f4200badd456e1cd5edc9457745c499 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172804 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-07-31cid#1555587 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1555589 COPY_INSTEAD_OF_MOVE cid#1555593 COPY_INSTEAD_OF_MOVE cid#1555596 COPY_INSTEAD_OF_MOVE cid#1555602 COPY_INSTEAD_OF_MOVE cid#1555608 COPY_INSTEAD_OF_MOVE cid#1555610 COPY_INSTEAD_OF_MOVE cid#1555620 COPY_INSTEAD_OF_MOVE cid#1555623 COPY_INSTEAD_OF_MOVE cid#1555625 COPY_INSTEAD_OF_MOVE cid#1555626 COPY_INSTEAD_OF_MOVE cid#1555634 COPY_INSTEAD_OF_MOVE cid#1555638 COPY_INSTEAD_OF_MOVE cid#1555667 COPY_INSTEAD_OF_MOVE cid#1555682 COPY_INSTEAD_OF_MOVE cid#1555686 COPY_INSTEAD_OF_MOVE cid#1555702 COPY_INSTEAD_OF_MOVE cid#1555710 COPY_INSTEAD_OF_MOVE cid#1555750 COPY_INSTEAD_OF_MOVE cid#1555752 COPY_INSTEAD_OF_MOVE cid#1555761 COPY_INSTEAD_OF_MOVE cid#1555762 COPY_INSTEAD_OF_MOVE cid#1555771 COPY_INSTEAD_OF_MOVE cid#1555772 COPY_INSTEAD_OF_MOVE cid#1555784 COPY_INSTEAD_OF_MOVE cid#1555785 COPY_INSTEAD_OF_MOVE Change-Id: Ib9724230c05b2027b4edf64e6a0bb5e22a270a88 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171274 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-07-23cid#1555070 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1555069 COPY_INSTEAD_OF_MOVE cid#1555128 COPY_INSTEAD_OF_MOVE cid#1555131 COPY_INSTEAD_OF_MOVE cid#1555137 COPY_INSTEAD_OF_MOVE cid#1555142 COPY_INSTEAD_OF_MOVE cid#1555152 COPY_INSTEAD_OF_MOVE cid#1555154 COPY_INSTEAD_OF_MOVE cid#1555161 COPY_INSTEAD_OF_MOVE cid#1555163 COPY_INSTEAD_OF_MOVE Change-Id: I86a5b7049ac8f31ca703add11381f5293233d9d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170863 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-07-11Unify/Port to use VCLUnoHelper for AWT <-> VCL conversionsMichael Weghorn
Following Change-Id: Id48f81deb05aee2026509037f7d14575735e5be0 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Jul 10 14:49:03 2024 +0200 VCLUnoHelper: Align AWT <-> VCL helpers with convert.hxx impl , port all uses of the helper functions defined in `include/toolkit/helper/convert.hxx` to use the `VCLUnoHelper` equivalents instead, to unify usage and avoid duplication. Drop `include/toolkit/helper/convert.hxx` now that it's unused. Change-Id: I22695a93e40e47bb2b14d191a2e0a4eb7c856895 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170317 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-06-16Fix typoAndrea Gelmini
Change-Id: I3be6bd8effb33183f67d63d910663d2741b24de5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168965 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2024-06-16Fix typoAndrea Gelmini
Change-Id: I3d26c49a46f7382b34bd1619cfe7ff09db5e200c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168964 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2024-06-16Fix typoAndrea Gelmini
Change-Id: I767eb6e62285434ff70e65f631e8bc77caf02995 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168966 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2024-06-15tdf#158914 add back reusing weakly cached ScAccessibleCellsPatrick Luby
While commit 8e886993f32b7db11a99bdecf06451e6de6c3842 fixed tdf#157568, moving the selected cell rapidly creates a large number of stale ScAccessibleCell instances that aren't deleted until the Calc document is closed. So reduce memory usage by adding back the ScAccessibleCell cache that was in commit f22cb3dfab413a2917cd810b8e1b8f644a016327 now that a new fix for tdf#157568 has been implemented. The new fix for tdf#157568 is to do the following: - Check if the edit engine text has changed. If the input string is different than the edit engine's existing text, force update of the edit engine's text. Otherwise, the edit engine will still to be set to its existing text. - Before a cell loses focus, check if any accessible text changes have occurred and fire text and value changed notifications if needed. Change-Id: I106ad0138d5d834367be59ca625d41a692696d4a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167961 Reviewed-by: Patrick Luby <guibomacdev@gmail.com> Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-06-11tdf#158914 sc a11y: Remember new cell text againMichael Weghorn
commit 5f9a955042822d05af5c04b2c852738c7e1e21a2 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Fri Jun 7 13:03:19 2024 +0200 tdf#158914 sc a11y: Send TEXT_CHANGED event when text changes had made sending a `AccessibleEventId::VALUE_CHANGED` event conditional on the cell having a *numerical* value. Assigning the new string to `m_strCurCellValue` should always happen independent of this, though, as this is the string value, not the numerical value. Thanks to Patrick Luby for noting the difference in [1]. [1] https://gerrit.libreoffice.org/c/core/+/167961/comment/1af95eb6_7db33e0b/ Change-Id: I1d1da2caeb7f2199251599313ec4412d7b6e47b5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168635 Tested-by: Jenkins Reviewed-by: Patrick Luby <guibomacdev@gmail.com> Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-06-08cid#1603563 Unchecked return valueCaolán McNamara
Change-Id: Ie41d77d8809b28e44b2fa084f2f9e6cdfb6e167f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168579 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-06-07tdf#158914 sc a11y: Send TEXT_CHANGED event when text changesMichael Weghorn
Don't always send an `AccessibleEventId::VALUE_CHANGED` event when the string value of a Calc cell changes, but send a `AccessibleEventId::TEXT_CHANGED` event instead. Only send an `AccessibleEventId::VALUE_CHANGED` event in addition if the cell actually has value data, as the `XAccessibleValue` interface and the related `VALUE_CHANGED` event are meant to handle numerical values only. Together with changes like the one in PS 11 of [1], sending the `TEXT_CHANGE` event might help with missing text updates on the AT side, e.g. the NVDA or Accerciser scenarios described in [2], s. further discussion there. [1] https://gerrit.libreoffice.org/c/core/+/167961 [2] https://gerrit.libreoffice.org/c/core/+/167961/comments/16394c5a_338dbbf2 Change-Id: Ideba61a9200100c66d55fa18e81ea28e75092905 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168526 Reviewed-by: Patrick Luby <guibomacdev@gmail.com> Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-05-31sc: Reduce number of calls to GetMarkedObjectList()Xisco Fauli
From 152 to 102 Change-Id: I43907965e5b1ef0819495d6a1e7b18597a1b5947 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168283 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-05-25related tdf#158914 sc a11y: Release references when disposing sheetMichael Weghorn
Clear all `ScAccessibleCell` references that are owned by `ScAccessibleSpreadsheet` when disposing the sheet instead of when the sheet is deleted. While `ScAccessibleSpreadsheet::disposing` is always called, `ScAccessibleSpreadsheet::~ScAccessibleSpreadsheet` is not called until all of the sheet's `ScAccessibleCell` instances have been deleted. So make sure that `ScAccessibleSpreadsheet::disposing` releases all `ScAccessibleCell` references. This might possibly reduce some of the leaks mentioned in [1]. [1] https://gerrit.libreoffice.org/c/core/+/167961/comments/15a6a4e4_91a77291 Change-Id: Iaf14338945c1899d54c8e7f8a16f38a48316ac98 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167985 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-05-22loplugin:ostr in sc/../AccessibilityNoel Grandin
Change-Id: Ibf9981ee800054c10b663d9fc91602d326175a68 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167919 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-04-24[API CHANGE] a11y: Use XAccessible for relation targetsMichael Weghorn
Use a Sequence of XAccessible rather than its base interface XInterface for AccessibleRelation's TargetSet. As the targets are accessible objects as well, anything other than XAccessible doesn't make much sense. Using XAccessible right away makes that clearer and avoids the need to query the XAccessible interface. (The winaccessibility bridge was already using `static_cast`, relying on the fact that the objects are XAccessibles.) The a11y UNO API is not published, so an API change should be unproblematic. Change-Id: I7f08e98d1ec303d5343d9a7954187cdd71495ebc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166586 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-04-10tdf#146619 Drop unused 'using namespace' in: sc/Gabor Kelemen
Change-Id: I03478dd4c8e3c2ac88c0fe5e51efd53b09888475 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165695 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2024-03-06tdf#158773 reduce cost of ContentInfo::GetTextNoel Grandin
The specific path that is showing up on the perf profile is SdrTextObj::HasText -> EditTextObjectImpl::GetText -> ContentInfo::GetText Reduce the cost by 10% there by adding a method to check if we have text, and avoid the cost of constructing an OUString from an svl::SharedString. Also make use of the new method in places. Change-Id: Ibc2e0f61c4a2a6c33eea7f2cce09d692d82fd2b2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164449 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-02-12ITEM: ItemPool Rework (I)Armin Le Grand (allotropia)
Driving forward the Item reworks I now take the ItemPool in focus: It now does not hold any items anymore and should be renamed to something like ItemInfoProvider/ItemHelper, since it's main purpose is to provide the Defaults for the Item functionality. There is that SfxItemInfo, only a struct and bundling SlotID and ItemFlags. There are also the DefaultItems, just handled as ptrs in an array. It is/was always error-prone to keep these in sync. Remember that it's also necessary for the order to not only being sorted but being increments of one with no gaps allowed in the WhichIDs to which the Items are bound. I now bundled that to a new class ItemInfo that joins WhichID, SlotID, ItemFlags and the default Item. This is a pure virtual base class, it comes in three derivations: (1) ItemInfoStatic: This is supposed to be global static and hosts the Item in a std::unique_ptr to ensure cleanup. It is designed to be constructed once during runtime and being shared globally. It allows the ItemPtr to be nullptr to mark as non-static (if initial static is not possible for some reason) but still offers the needed data. Most cases (95%+) are of that case. The contained Item is owned by that instance. The flag isStaticDefault() is set at the Item. (2) ItemInfoDynamic: This is supposed to be used for cases where the Item cannot be static: Mainly for SfxSetItem (that needs a Pool itself in the contained SfxItemSet, so lifetime is bound to that Pool), but other cases showed up in the transition. These instances live while the Pool lives and get destructed when the Pool goes down. Also uses std::unique_ptr for the Item instance for as much automated cleanup as possible, the contained Item is owned by that instance, the instance by the Pool. The flag isDynamicDefault() is set at the Item. (3) ItemInfoUser: This is used for UserDefaults that can be set for every ItemInfo entry to 'overshadow' the default from the 'outside'. It uses a regular Item and the central access methods implCreateItemEntry/ implCleanupItemEntry to manage the Item instance, thus works like a SfxPoolItemHolder. The Item instance can be globally shared and re-used even when the Pool goes down. Instances belong to the Pool and are cleaned up when the Pool goes down. This Item does not need any further flag to be set. The ItemInfos are organized using a class called ItemInfoPackage: This bundles groups of ItemInfoStatic to functional instances. There are derivations/ implementations of this e.g. for Writer ItemPool bundling all the needed defaults for Writer, similar for draw/impress, Calc and other usages. These ItemInfoPackage can be 'registered' at an ItemPool using it's method registerItemInfoPackage. This does all the needed stuff to setup that group of ItemInfos at the Pool (It even sets internal vars First/LastWhich, that info can just be derived from the buildup ItemInfo Ptrs). The ItemInfoPackage has methods 'size()' and 'getItemInfo(index) to allow looping over it and deliver the infos the Pool needs. The (forced, pure virtual) overloads of getItemInfo in the specific implementations check for the ItemPtr being nullptr and create a exclusive incarnation of ItemInfoDynamic for the Pool if needed, returning that. The Pool owns the ItemInfoDynamic incarnations and uses the ItemInfoStatic directly. On shutdown it cleans up the ItemInfoDynamic as needed. The ItemInfoUser is used by the Pool when a UserDefault is set/used: for SetUserDefaultItem, GetUserDefaultItem, ResetUserDefaultItem. It is not held in a 2nd list, but directly in the list of ItemInfo'ptrs: To keep track of this an unordered_map is used that helds the original ItemInfo associated with the WhichID. That way no two lookups (as before) are needed to get the current Pool's default for any WhichID. The derivations of ItemInfoPackage are encapsulated and just allow access to an ItemInfoPackage& with a single method as return value. All use a static local instance of a std::array<ItemInfoStatic, FIXED_SIZE> which constructs all ItemInfoStatic and the static Item instances - if already possible. Sometimes it is necessary to overload the constructor to set some static instances for Items later than the lib init. These are also just marked with nullptr as Item instance. Some need to overload getItemInfo to complete instances of ItemInfoStatic, if needed, or create and deliver instances of ItemInfoDynamic. The registerItemInfoPackage also offers a optional lambda callback: there were two cases where local data from the Pool was needed to incarnate the item - just add that to the call to registerItemInfoPackage if needed, see examples in the adapted code. For the re-use of Items this means that now in SfxItemSet/SfxPoolItemHolder *true* static Items can and will be used without RefCount directly and globally. This is also the case for dynamic Items, with the exception of differing Pools for SfxSetItems which cannot be done. Future: That design is already prepared to allow solving that Pool-chaining problem: currently there are master/sub-pools and all accesses have to traverse that structure before even doing anything. For the future the idea is more to 'compose' a Pool by registering ItemInfoPackages, e.g. for Writer pool you may start with SfxItemPool, register the writer-specific ItemInfoPackage, then the one for DrawingLayer (if needed) and the one for EditEngine. It should also be possible to get to smaller granularities of that packages. Ideas for new ones will emerge. We might also think about composing Pools which can e.g. run Writer and Chart, so allowing to use Chart *without* OLE stuff in Writer - just ideas... More changes: - Adapted all stuff, cleaned up old stuff/ definitions - Removed FreezeIdRanges, that can be done once per Pool on-demand (and cannot be forgotten to be called) - Merged XOutdevItemPool with SdrItemPool and offered a ItemInfoPackage which joins both needed sets of Items - All the cleanup hassle with Pools and defaults cleaned up - Adapted all access methods of the pool to use that new stuff. Pool chaining currently stays, but I use a central method 'getTargetPool' instead of recursive calling to get the correct Pool for the action Change-Id: I2b8d3d4c3cc80b1d0d0b3c0f4bd90d7656b4bab7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163157 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-01-21editeng: change EditEngine getter to ref in {Imp}EditViewTomaž Vajngerl
{Imp}EditView always needs to have EditEngine set (or it would crash otherwise), so we can change the getter to return a referece instead of a pointer. This simplifies things a bit because we get rid of all the nullptr checks and makes the interface more clear. Also change direct access to mpEditEngine in {Imp}EditView to use getEditEngine() and getImpEditEngine() (returning a reference) instead. Change-Id: Ib8f9c565b8364144bb9c35c3093c4975af1970c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162333 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28Decouple ScPatternAttr from SfxItemPoolArmin Le Grand (allotropia)
ScPatternAttr is traditionally derived from SfxPoolItem (or better: SfxSetItem) and held in the ScDocumentPool as Item. This is only because of 'using' the 'poolable' functionality of the Item/ItemSet/ItemPool mechanism. Lots of hacks were added to sc and Item/ItemSet/ ItemPool to make that 'work' which shows already that this relationship is not optimal. It uses DirectPutItemInPool/DirectRemoveItemFromPool to do so, also with massive overhead to do that (and with not much success). The RefCnt in the SfxPoolItem that is used for this never worked reliably, so the SfxItemPool was (ab)used as garbage collector (all Items added and never removed get deleted at last for good when the Pool goes down). For this reasons and to be able to further get ItemSets modernized I changed this. I did two big changes here: (1) No longer derive ScPatternAttr from SfxItemSet/ SfxSetItem, no longer hold as SfxPoolItem (2) Add tooling to reliably control the lifetime of ScPatternAttr instances and ther uniqueness/ reusage for memory reasons It is now a regular non-derived class. The SfxItemSet formally derived from SfxSetItem is now a member. The RefCnt is now also a member (so independent from size/data type of SfxPoolItem). All in all it's pretty much the same size as before. To support handling it I created a CellAttributeHelper that is at/owned by ScDocument and takes over tooling to handle the ScPatternAttr. It supports to guarantee the uniqueness of incarnated ScPatternAttr instances for a ScDocument by providing helpers like registerAndCheck and doUnregister. It hosts the default CellAttribute/ ScPatternAttr. That default handling was anyways not using the standard default-handling of Items/Pools. I adapted whole SC to use that mainly by replacing calls to DirectPutItemInPool with registerAndCheck and DirectRemoveItemFromPool with doUnregister, BUT: This was not sufficient, the RefCnt kept to be broken. For that reason I decided to also do (2) in this change: I added a CellAttributeHolder that owns/regulates the lifetime of a single ScPatternAttr. Originally it also contained the CellAttributeHolder, but after some thoughts I decided that this is not needed - if there is no ScPatternAttr set, no CellAttributeHolder is needed for safe cleanup at destruction of the helper. So I moved/added the CellAttributeHolder to ScPatternAttr where it belongs more naturally anyways. The big plus is that CellAttributeHolder is just one ptr, so not bigger than having a simple ScPatternAttr*. That way, e.g. ScAttrEntry in ScAttrArray did not 'grow' at all. In principle all places where a ScPatternAttr* is used can now be replaced by using a CellAttributeHolder, except for construction. It is capable to be initialized with either ScPatternAttr instances from the heap (it creates a copy that then gets RefCounted) or allocated (it supports ownership change at construction time). Note that ScAttrEntry started to get more a C++ class in that change, it has a constructor. I did not change the SCROW member, but that should also be done. Also made registerAndCheck/doUnregister private in CellAttributeHelper and exclusively used by CellAttributeHolder. That way the RefCnt works, and a lot of code gets much simpler (check ScItemPoolCache, it's now straightforward) and safer and ~ScPatternAttr() uses now a hard assert(!isRegistered()); which shows that RefCnt works now (the 1st time?). There can be done more (see ToDo section below) but I myself will concentrate on getting ItemSets forward. This decoupling makes both involved mechanisms more safe, less complex and more stable. It also opens up possibilities to further optimize ScPatternAttr in SC without further hacking Item/ItemSet/ItemPool stuff. NOTE: ScPatternAttr *should* be renamed to 'CellAttribute' which describes what it is. The experiencd devs may know what it does, but it is a hindrance for understanding for attacting new devs. I already used now names like CellAttributeHelper/CellAttributeHolder etc., but abstained from renaming ScPatternAttr, see ToDo list below. SfxItemSet discussion: ScPatternAttr still contains a SfxItemSet, or better, a SfxSetItem. For that reason it still depends on access to an SfxItemPool (so there is acces in CellAttributeHelper). This is in principle not needed - no Item (in the range [ATTR_PATTERN_START .. ATTR_PATTERN_END]) needs that. In principle ScPatternAttr could now do it's own handling of those needed Items, however this might be done (linear array, hash-by-WhichID, ...). The Items get translated to and from this to the rest of the office anyways. Note that *merging* of SfxItemSets is *still* needed what means to have WhichID slots in SfxItemState::DONTCARE, see note in ScPatternAttr::ScPatternAttr about that. And there is also the Surrogates stuff which would have to be checked. The other extreme is to use SfxItemSet *more*, e.g. directly derive from SfxItemSet what would make stuff easier, maybe even get back to using the 'regular' Items like all office, I doubt that that would be much slower, so why...? Also possible is to remove that range of Items exclusively used by ScPatternAttr from ScDocumentPool *completely* and create an own Pool for them, owned by CellAttributeHelper. That Pool might even be static global, so all SC Docs could share all those Items - maybe even the ScPatternAttr themselves (except the default per document). That would remove the dependency of ScPatternAttr from a Pool completely. ToDo-List: - rename ScPatternAttr to CellAttribute or similar - use SfxItemSetFixed with range [ATTR_PATTERN_START .. ATTR_PATTERN_END] instead of regular SfxItemSet (if the copy-construtor works now...?) - maybe create own/separate Pool for exclusive Items - make ScAttrEntry more a C++ class by moving SCROW to the private section, add get/set methods and adapt SC Had to add some more usages of CellAttributeHolder to the SC Sort mechanism, there were situations where the sorted ScPatternAttr were replaced in the Table, but the 'sorted' ones were just ScPatternAttr*, thus deleting the valid ones in the Table already. Using CellAttributeHolder makes this safe, too. Added a small, one-entry cache to CellAttributeHelper to buffer the last found buffered ScPattrnAttr. It has a HitRate of ca. 5-6% and brings the UnitTest testSheetCellRangeProperties from 0m48,710s to 0m37,556s. Not too massive, but erery bit counts :-) Also shows that after that change optimizations in the now split functionality is possible and easy. Change-Id: I268a7b2a943ce5ddfe3c75b5e648c0f6b0cedb85 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161244 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-16cid#1545970 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1545957 COPY_INSTEAD_OF_MOVE cid#1545944 COPY_INSTEAD_OF_MOVE cid#1545939 COPY_INSTEAD_OF_MOVE cid#1545931 COPY_INSTEAD_OF_MOVE cid#1545926 COPY_INSTEAD_OF_MOVE cid#1545909 COPY_INSTEAD_OF_MOVE cid#1545899 COPY_INSTEAD_OF_MOVE cid#1545896 COPY_INSTEAD_OF_MOVE cid#1545894 COPY_INSTEAD_OF_MOVE cid#1545858 COPY_INSTEAD_OF_MOVE cid#1545823 COPY_INSTEAD_OF_MOVE cid#1545820 COPY_INSTEAD_OF_MOVE cid#1545819 COPY_INSTEAD_OF_MOVE cid#1545772 COPY_INSTEAD_OF_MOVE cid#1545749 COPY_INSTEAD_OF_MOVE cid#1545743 COPY_INSTEAD_OF_MOVE cid#1545739 COPY_INSTEAD_OF_MOVE cid#1545635 COPY_INSTEAD_OF_MOVE cid#1545603 COPY_INSTEAD_OF_MOVE cid#1545602 COPY_INSTEAD_OF_MOVE cid#1545592 COPY_INSTEAD_OF_MOVE cid#1545544 COPY_INSTEAD_OF_MOVE cid#1545532 COPY_INSTEAD_OF_MOVE cid#1545520 COPY_INSTEAD_OF_MOVE cid#1545512 COPY_INSTEAD_OF_MOVE cid#1545490 COPY_INSTEAD_OF_MOVE cid#1545483 COPY_INSTEAD_OF_MOVE cid#1545467 COPY_INSTEAD_OF_MOVE cid#1545461 COPY_INSTEAD_OF_MOVE cid#1545458 COPY_INSTEAD_OF_MOVE cid#1545428 COPY_INSTEAD_OF_MOVE cid#1545394 COPY_INSTEAD_OF_MOVE cid#1545385 COPY_INSTEAD_OF_MOVE cid#1545383 COPY_INSTEAD_OF_MOVE cid#1545366 COPY_INSTEAD_OF_MOVE cid#1545357 COPY_INSTEAD_OF_MOVE Change-Id: I76224326977b4067b94ca3176cad1ca6de17930a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160847 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-11-15avoid double map lookupNoel Grandin
Change-Id: I02018eaaf220c7835756eba6215425bac9cbc6f3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159432 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-15tdf#158030 sc a11y: Report cell coords via {row,col}indextext obj attrMichael Weghorn
Expose the end-user consumable coordinates of a Calc cell via "rowindextext" and "colindextext" object attributes. These are specified in the ARIA specification and the Accessibility Core API Mappings spec suggests to map them to attributes of the same name for all of AT-SPI2, IAccessible2 and UIA [1] [2], so no extra mapping is needed in the platform-specific a11y bridges for now. Orca git master already contains a commit to make use of these attributes [3]: commit 3c056cd7b58aa2cb1b3342c87d052704ef32fa24 Author: Joanmarie Diggs <jdiggs@igalia.com> Date: Mon Nov 13 18:19:12 2023 +0100 Look for the rowindextext and colindextext attributes in soffice We were looking for these attributes only in the web script because they are ARIA properties. Ultimately we will do this check globally. In the meantime, if LO Calc exposes these attributes, we can remove a hack or two. Therefore add support now so that they can prototype. The attributes are exposed to IAccessible2 and AT-SPI when using the gtk3 VCL plugin right away. For qt6, this works with pending Qt changes suggesting to add support for object attributes [4] [5] and the corresponding LO change to implement the new interface [6] (currently via the `CustomAttributes` attribute, might make sense to introduce separate ones, but that's something to look into once the pending Qt changes to add a mechanism have been reviewed). [1] https://www.w3.org/TR/core-aam-1.2/#ariaRowIndexText [2] https://www.w3.org/TR/core-aam-1.2/#ariaColIndexText [3] https://gitlab.gnome.org/GNOME/orca/-/commit/3c056cd7b58aa2cb1b3342c87d052704ef32fa24 [4] https://codereview.qt-project.org/c/qt/qtbase/+/517525 [5] https://codereview.qt-project.org/c/qt/qtbase/+/517526 [6] https://gerrit.libreoffice.org/c/core/+/159309 Change-Id: Ib675abafa2028d986b31d64ea7f5a38b1d54fc11 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159411 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-10loplugin:fieldcast in accessibility::AccessibleContextBaseNoel Grandin
Change-Id: Ibd71c2e809731114d4415754c8fd94110bd5736b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159225 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-23Extended loplugin:ostr: Rewrite some O[U]StringLiteral -> O[U]StringStephan Bergmann
...in include files. This is a mix of automatic rewriting in include files and manual fixups (mostly addressing loplugin:redundantfcast) in source files that include those. Change-Id: I1f3cc1e67b9cabd2e9d61a4d9e9a01e587ea35cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158337 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-19use more SdrObjList::begin/end in scNoel Grandin
Change-Id: I6b8614e4e8917f71308cda4caaeb714ae18885f1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158130 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-07tdf#157568 After deleting the content of a cell by pressing the delete..Noel Grandin
.. key, Orca still speaks the content. this reverts commit f22cb3dfab413a2917cd810b8e1b8f644a016327 Author: Noel Grandin <noelgrandin@gmail.com> Date: Mon Jun 12 20:02:19 2023 +0200 tdf#155376 weakly cache ScAccessibleCell which was a nice idea, but means that we would need to have some way of updating the ScAccessibleCell when the associated cell data changes. Which is likely to be complicated. So return to creating new ScAccessibleCell objects all the time, but fix them to not leak. Change-Id: Ie17ee5c950c9809d4c7281f93761584f75256121 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157673 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-09-26tdf#157299 sc a11y: Limit amount of reported cell relationsMichael Weghorn
For the cells referenced in formulae, the a11y `CONTROLLED_BY` relation is reported. Since formulae can reference a large amount of cells, creating the a11y objects for each of these cells can result in Calc freezing, e.g. for the tdf#157299 `SUMIF` example that was referencing a whole column (containing 1048576 cells). Prevent that by limiting the maximimum amount of cells to handle here to 1000, and just printing a warning to the log otherwise and ignore cell ranges having more cells. If there's a need to increase the limit, that should be possible within certain bounds. My test with a modified SUMIF that just uses 999 cells wasn't causing any noticeable delay and the relations were shown in Accerciser as expected. From a quick look at the Orca and NVDA source code, they currently don't seem to make use of the `CONTROLLED_BY` relation for LibreOffice at all. Change-Id: Ia74e0e88d9dbd7650832664b9c027262367b428e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157265 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-09-15reduce casting around ScDocShellNoel Grandin
instead of using SfxObjectShell and then static_cast'ing it everywhere. Change-Id: Id3184e44f048228dc4d0d9fa5d579e663c2762cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156945 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
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-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-17simply some LogicToPixel calculation sitesNoel Grandin
Change-Id: I9698562dd1f8d4679c9999342ded1022bde698be Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154523 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-06-13tdf#155376 weakly cache ScAccessibleCellNoel Grandin
the macOS accessibility framework repeatedly queries and enumerates all of the visible cells. Every time this happens we create a new set of ScAccessibleCell, which then live until the application shuts down, which then causes a very slow shutdown. So I fix the problem by caching the ScAccessibleCell so we return the same one for a given cell position. Of course, this begs the question of why the ScAccessibleCell objects are not dying when we create new ones, which means we have some kind of leak or lifecycle problem somewhere, but anyhow, this is a fairly simple and comprehensive fix. Change-Id: Id2765236ac4524f490a51b56268fb8038612fd43 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152932 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-05-23a11y: Fix returning unpaired surrogates when retrieving charactersColomban Wendling
Fix implementations of XAccessibleText's getTextAtIndex(), getTextBeforeIndex() and getTextBehindIndex() when called with AccessibleTextType::CHARACTER to return the whole code point rather than an unpaired surrogate. This is still not perfect because XAccessibleText::getCharacterCount() will return an incorrect value (code units rather than code points), but it fixes the most useful case of retrieving the character at e.g. the caret offset. This fixes the GTK3 and Windows backends as well without further changes. Qt6 also mostly works according to Michael Weghorn, but for a bug on Qt's side (https://bugreports.qt.io/browse/QTBUG-113438). MacOS backend doesn't seem to be affected in the first place. Change-Id: I53f07bcba78c6b267939257542a521b106101e96 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151303 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-05-17fire less "index hint out of range, ignoring" warningsNoel Grandin
after commit 3b7db802731826b6cc3b55100470b0c61c1f2dfa Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Thu May 4 10:06:14 2023 +0200 tdf#105404 [API CHANGE] add index to accessiblity change event Change-Id: I52d6b7b7368b780c1c9fdf60628311cb02429eff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151872 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-05-05tdf#155149 Crash when exiting cell edit modeNoel Grandin
regression from commit 2dc240a82646fc23c673a6fd5a29ade934dd5b67 Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Tue May 2 14:47:43 2023 +0200 improve AccessibleEventNotifier::addEvent and commit 3b7db802731826b6cc3b55100470b0c61c1f2dfa Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Thu May 4 10:06:14 2023 +0200 tdf#105404 [API CHANGE] add index to accessiblity change event (*) Send better index hints (*) Error check the index hints better (*) Convert asserts to warnings and fall back to old code when index hint is wrong. Change-Id: I8e752fc26e729c9c8926beb2c7b196f5418a147e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151419 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>