summaryrefslogtreecommitdiff
path: root/editeng
AgeCommit message (Collapse)Author
3 daystdf#126154 sw offapi xmloff cui: add min/max word spacingLászló Németh
To avoid of rivers and too much hyphenation, add minimum and maximum word spacing options, similar to XSL-FO/CSS and DTP software. Only limiting hyphenation was implemented: hyphenation of the words are disabled, if it's possible to expand or shrink the spaces of the line within the values specified by the maximum and minimum word spacing. First try to apply the minimum word spacing, and if not possible, then the maximum word spacing. Note: maximum allowed shrinking has been applied for the hyphenated lines instead of the minimum to remove the hyphenation, yet. With the suggested default word spacing values, this results no or minimal differences. New UNO paragraph properties: com::sun::star::text::ParaWordSpacingMinimum com::sun::star::text::ParaWordSpacingMaximum New ODF paragraph attributes: loext:word-spacing-minimum loext:word-spacing-maximum New paragraph settings on Text Align pane: Minimum word spacing Maximum word spacing While the desired word spacing got "Desired" label. Note: suggested values of minimum, desired and maximum word spacing are 80%, 100% and 133% (default values e.g. in Adobe InDesign), in narrow columns e.g. 60%, 100% and 150%. Follow-up to commit 7d6696757dcdfa3cee481ac7795a91b2b47da363 "tdf#159923 sw cui offapi xmloff: add custom word spacing". Change-Id: I7f2a07f7fdb634cb16cdd8c2c937ca911b968405 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184595 Reviewed-by: László Németh <nemeth@numbertext.org> Tested-by: Jenkins
5 daystdf#166194 Chinese characters crowd in cellNoel Grandin
regressioon from commit 11b15571475414ef853e21a6c96afa2ac81f848f Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Wed Oct 30 09:51:26 2024 +0200 convert KernArray from sal_Int32 to double Change-Id: I5c9a9d6caa0091f4be1c3307cc842b2ea4662728 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184449 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
11 dayscrashtesting: negative array index on load of tdf100936-4.odtCaolán McNamara
since: commit 5a03d511f46ecc05aab35bb29e714b46f5638b1b CommitDate: Wed Apr 9 06:47:38 2025 +0200 tdf#130592 i18npool: Fix incorrect line breaking in mixed CJK+Latin nBreakPos is -1 here, which itself looks dubious, but there is a later nBreakPos < nMinBreakPos already. Change-Id: Ie7f10bee19c359c877e454d20ab1a0efbf5b92c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184338 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
11 daysRemove obsolete fw declarations from editeng/Gabor Kelemen
found with bin/find-unneeded-includes --fwdecl Change-Id: Ic021d9a47f9974d20ef011b34f4897847dd2628a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183884 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
12 daystdf#163618 editeng: Fix excessive overlap in justified Arabic scriptJonathan Clark
Fixes a bug causing editeng to insert kashida glyphs in positions where there is not enough space for them. The root cause was failing to account for the extra space used by blanks while rejecting candidate kashida positions. Change-Id: I1e22f758af0a88c2070f31cca040570f3a730c08 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184282 Tested-by: Jenkins Reviewed-by: Jonathan Clark <jonathan@libreoffice.org>
12 daystdf#159923 sw cui offapi xmloff: add custom word spacingLászló Németh
Add com::sun::star::text::ParaWordSpacing UNO and loext:word-spacing ODF extensions to set desired word spacing of a justified paragraph relative to the width of the space character, like DTP software do. Add Justification section and "Word spacing" spin box to the Text Align pane of paragraph settings. This extends not only the smart justify interoperability feature for custom shrinking (until 0%), but for custom expansion, too, until 1000%, like Adobe InDesign do. Note: this value hasn't been applied in the last paragraph line, yet. See also XSL-FO/CSS word-spacing and commit 7d08767b890e723cd502b1c61d250924f695eb98 "tdf#130088 tdf#119908 smart justify: fix DOCX line count + compat opt." Change-Id: I06f771335135e4682a1d1abfc9a247dbe4bc6b66 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184187 Reviewed-by: László Németh <nemeth@numbertext.org> Tested-by: Jenkins
13 daysloplugin:unusedfieldsNoel Grandin
Change-Id: I45eedbeeb839279fb469a74a2f8ae1ff3cf32a38 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184161 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2025-04-11editeng a11y: Drop AccessibleContextBase::getAccessibleIndexInParentMichael Weghorn
The base class implementation in OAccessibleComponentHelper::getAccessibleIndexInParent already implements the same logic. Change-Id: I4bd338632c4e440a54470f1294a9e67a0ccb866d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184000 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-10editeng a11y: Drop AccessibleContextBase::ThrowIfDisposedMichael Weghorn
Use the equivalent base class method OAccessibleComponentHelper::ensureAlive instead. Change-Id: I17a87b743d2a7b324cd4ae04cb1b924c676f0195 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183979 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-10editeng a11y: Inline AccessibleContextBase::FireEvent to only callerMichael Weghorn
Change-Id: Ia7ca4b39dc0917b05326e747820688eeb6c45343 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183978 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-08editeng a11y: Pass bullet's child index in ctorMichael Weghorn
... instead of having a separate getter, AccessibleImageBullet::SetIndexInParent. Change-Id: Ie0e59f87e12d04efd72aa5663c4a3eb0df9baf21 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183829 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-08editeng a11y: Drop AccessibleImageBullet::FireEventMichael Weghorn
Use base class method OAccessibleComponentHelper::NotifyAccessibleEvent directly instead. That one has the reverse order for the old/new value params, and no default for the old value, so adjust callers accordingly. Change-Id: Ib591495c5698832a99cd60854d4ee8aa4a206442 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183828 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-08editeng a11y: Use OAccessibleComponentHelper for bulletMichael Weghorn
Let editeng's AccessibleImageBullet derive from OAccessibleComponentHelper to make use of the logic already implemented there instead of having to implement all the XAccessibleComponent and XAccessibleEventBroadcaster methods manually. The existing AccessibleImageBullet::implGetBounds implementations provide the necessary logic to implement OAccessibleComponentHelper::implGetBounds, so mark it as overriding the base class method. Drop all of the other overrides that are no longer needed as the implementation is now provided by the base class. No change in behavior intended or observed in a quick test with Impress and Accerciser and the gtk3 VCL plugin on Linux. Sample steps to add a bullet item that shows up in the a11y tree: 1) start Impress 2) Create a new slide (Ctrl+M) 3) type text "Hello world" for the first list item 4) right-click on paragraph to open context menu, select "Bullets and Numbering" 5) For "Type", select "Graphics" 6) select "Select image..." -> "Gallery" -> "bluearrow" 7) close dialog with "OK" button Then, start Accerciser, and locate the "Image bullet" object within LibreOffice's a11y tree. Change-Id: Iba9d44288be96838e39d7cee2333f7a074deae8e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183783 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-08editeng a11y: Drop unnecessary exception handling codeMichael Weghorn
Modifying a sal_Int64 value won't throw an exception. Change-Id: Ia5739ecebb839dfcd51c27f35309ad717b505c56 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183782 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-08editeng a11y: Simplify AccessibleImageBullet::FireEventMichael Weghorn
* Drop const qualifier, which removes the need to const_cast. * Don't call AccessibleImageBullet::getAccessibleContext, but just use `this` directly. Change-Id: I4949ec624e44b6330a0ca5f71f898f1d17b4bd8d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183781 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-08editeng a11y: Let paragraph dispose its bullet childMichael Weghorn
Instead of letting AccessibleImageBullet dispose itself in AccessibleImageBullet::SetEditSource when called with a null edit source, let the AccessibleEditableTextPara that created the bullet and can therefore be considered the owner (see AccessibleEditableTextPara::getAccessibleChild) dispose it again in AccessibleEditableTextPara::dispose. Also clear `maImageBullet`. This is similar to commit 138bc16c9aac04def13843bb9bf6f18075a88c0f Author: Michael Weghorn <m.weghorn@posteo.de> Date: Thu Apr 3 11:59:51 2025 +0200 editeng a11y: Let para manager dispose its child Change-Id: I8083b0c9bf304942e9ead446bdeaefeb62ae609f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183780 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-08editeng a11y: Drop empty lines at beginning of methodsMichael Weghorn
Change-Id: Ib25bc28adab2e220c4fe3056413a6fac10fcbdc2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183779 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-08editeng a11y: Drop extra indentation levelMichael Weghorn
Change-Id: I1d2f37499b5b1634141f9023815b0cb5ac1f4f18 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183778 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-04editeng: extract ImpEditView::ImplGetCursorRectAndMaybeScroll()Michael Stahl
... to separate it from the VCL-Cursor/LOK logic. Change-Id: I60f533630e6c55e832d1471c1512d6651107d5a7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183310 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins
2025-04-04editeng a11y: Use usual 4 spaces to indent one levelMichael Weghorn
... instead of 6 Change-Id: I27585734069f76d7d535c01760d0bd2085f51051 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183707 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-04editeng: factor out ImpEditEngine::UpdateSelection()Michael Stahl
Change-Id: Ia6f694a813ad30aadf159db0f75fb1a86e9663dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181676 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins
2025-04-03editeng a11y: Use OAccessibleComponentHelper for paragraphMichael Weghorn
Let editeng's AccessibleEditableTextPara derive from OAccessibleComponentHelper to make use of the logic already implemented there instead of having to implement all the XAccessibleComponent and XAccessibleEventBroadcaster methods manually. The existing AccessibleEditableTextPara::getBounds implementations provide the necessary logic to implement OAccessibleComponentHelper::implGetBounds, so rename those accordingly (and drop the extra mutex guard, as the base class takes care of that). Drop all of the other overrides that are no longer needed as the implementation is now provided by the base class. No change in behavior intended or observed in a quick test with text in Impress slides and Accerciser and Orca when using the gtk3 and qt6 VCL plugins on Linux. Change-Id: I5cb47eb9c6738f4bd7807cbeef260151437c0862 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183681 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-03editeng a11y: Simplify AccessibleEditableTextPara::FireEventMichael Weghorn
* Make method non-const, which avoid the need to const_cast. * Just use `this` directly instead of calling `getAccessibleContext`, which returns a reference to `this` again. This also prepeare for turning AccessibleEditableTextPara into an OAccessibleComponentHelper subclass in an upcoming commit. Change-Id: I74526e47070979ce34e89c165843ca3a5a9b1f60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183680 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Let para manager dispose its childMichael Weghorn
Instead of letting AccessibleParaManager dispose itself in AccessibleEditableTextPara::SetEditSource when called with a null edit source, let the AccessibleParaManager that created the paragraph and can therefore be considered the owner (see AccessibleParaManager::CreateChild) dispose it again in AccessibleParaManager::Release. This is consistent with how it also explicitly disposes all children in AccessibleParaManager::Dispose. This is the only place that calls AccessibleEditableTextPara::SetEditSource with a null param, so this change shouldn't change behavior in any way. Change-Id: I9d6ec8db69a789c18fd424e680624744b4913798 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183679 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Deduplicate bullet text length calculationMichael Weghorn
Add a helper method AccessibleEditableTextPara::GetBulletTextLength instead of duplicating the same logic 6 times in different places. Change-Id: I8f9fa307fe52c84ca0200126061c5a957c7e02ab Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183677 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-03editeng a11y: Simplify AccessibleStaticTextBase::GetParagraphBoundingBoxMichael Weghorn
Change-Id: I0bcc4d5ee3c6d9f976688cb25e7b6a3234d78da2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183676 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Drop custom WeakCppRef, use unotools::WeakReferenceMichael Weghorn
Use the existing unotools::WeakReference instead of the custom WeakCppRef template class to hold weak references to the AccessibleEditableTextPara objects in AccessibleParaManager. An AccessibleEditableTextPara forward-declaration is not sufficient to use unotools::WeakReference<AccessibleEditableTextPara>, so re-arrange includes/forward-declarations a bit. Drop the now unused WeakCppRef. Change-Id: I54553059a7cb36515109573c5b22d73738b1c46f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183672 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Use unotools::WeakReference for bulletMichael Weghorn
Replace use of the custom WeakCppRef template class for AccessibleEditableTextPara::maImageBullet by unotools::WeakReference which provides the same functionality (a weak reference and access to the the concrete implementation class). Change-Id: I333f467caeb4925d718313e679507f45c9c96e00 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183671 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Simplify AccessibleParaManager::CreateChildMichael Weghorn
Both callers are only interested in the XAccessible in the returned std::pair, so let the method only return that instead of the pair. Drop the now unused AccessibleParaManager::Child typedef. Change-Id: I2b271de7b3e668be982b01bd183e0c39d47f444d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183670 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Replace auto and adhere to naming schemeMichael Weghorn
This makes more obvious that the child is a rtl::Reference<AccessibleEditableTextPara> here, which is otherwise a bit harder to see with all the typedefs etc. involved. Change-Id: Id9d0c2457813b7e0fed34b0ce8fe52553ef6a39d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183669 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Inline AccessibleParaManager::ShutdownPara in only callerMichael Weghorn
Change-Id: I27f86a476b6c4c7c90f4c26baff30cc1a525d9b8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183663 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Replace ReleaseChild class with lambdaMichael Weghorn
Change-Id: I0b036aebb481e3fe45fcad890a7f2227bc734142 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183662 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-03editeng a11y: Drop AccessibleStaticTextBase::mpThis etc.Michael Weghorn
AccessibleStaticTextBase::mpThis is only used to pass it to Exception ctors, so it seems a bit overkill to have to manage it for that purpose. Drop it and the corresponding setter AccessibleStaticTextBase::SetEventSource. Its doc says that the interface is also used as the event source for a11y events, but that's not actually the case. Also drop ScAccessibleCell::Init which now no longer needs to override the base class implementation, ScAccessibleCellBase::Init. Change-Id: Ide64cf2e59bfb9ae7df41171cc36e1df0c86eb9f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183628 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Merge AccessibleStaticTextBase{,_Impl}Michael Weghorn
Merge AccessibleStaticTextBase_Impl into AccessibleStaticTextBase. Further simplification will be possible in upcoming commits. Change-Id: I4f0067c2cf1cb5b2f464b8075bc4a64f44d7babc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183627 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-03editeng a11y: Drop extra indentation levelMichael Weghorn
Change-Id: I5f2d99730cfda9490c3fa9fa43242e0d5219ca82 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183626 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Drop paragraph's a11y descriptionMichael Weghorn
So far, "paragraph <number>" and the (start of) the paragraph text were reported as the accessible description of the paragraph. This resulted e.g. in Orca saying something like "Paragraph 0: Hello world Hello world" when moving cursor to a paragraph containing the text "Hello world" in Impress, because both, a11y description and the text reported via the AtspiText interface were reported. Drop the a11y description, which is also consistent with Writer where no description is reported. The // (writer takes first sentence here, but that's not supported // from EditEngine) comment dropped along with this commit looks outdated. The fact that this is a paragraph is already reported via the a11y role and the text is reported via the XAccessibleText interface. (The information which paragraph this is could be retrieved by checking the children of the paragraph's parent, so if an AT wanted to report that, it could implement corresponding logic on the client side.) Adjust the Impress a11y test originally added in commit 6185a27db46bf5cba404e669eaf3a1c78f4a8607 Author: Colomban Wendling <cwendling@hypra.fr> Date: Sun Jul 31 17:20:03 2022 +0200 tdf#150064 Add tests for a11y tree order Check the tree order is stable across loads and page switches. accordingly, which included the description in the expected output, but that's not the purpose of the test. Also adjust the sw a11y test (test::AccessibleTestBase::BasicTestFontworkDialog) accordingly. Change-Id: Ifbc1a15a976d7488396630c6bc3c9e42ba26ccc1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183625 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-03editeng a11y: Rely on XAccessibleContext implementing XAccessiblecomponentMichael Weghorn
Only query the XAccessibleContext of the parent accessible for the XAccessibleComponent interface, not the XAccessible first and the XAccessibleContext only as fallback. As far as I understand it, the XAccessible is only there to allow retrieving the XAccessibleContext using XAccessible::getAccessibleContext and all other logic should be implemented in the class implementing the XAccessibleContext interface. That's also what the platform bridges rely on, see e.g. `getComponent` in vcl/unx/gtk3/a11y/atkcomponent.cxx. If there's any case where this is handled differently, that one should likely be adjusted to match the pattern used everywhere else, too, instead of having special handling here in AccessibleEditableTextPara. (In most cases, it's the same class that implements both, the XAccessible and the XAccessibleContext interface anyway.) Change-Id: Ic03c11f8406213f5f44074e39fe867b4e8b93dff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183624 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-01tdf#165984 sw cui xmloff: add Paragraph/Column/Page/Spread end zoneLászló Németh
Add new hyphenation options to adjust hyphenation, like DTP software do in accordance with typographic requirements: – Paragraph/Column/Page/Spread end zone spin boxes to Hyphenate Across section of Text Flow pane of paragraph settings; – loext:hyphenation-zone-always, loext:hyphenation-zone-column, loext:hyphenation-zone-page and loext:hyphenation-zone-spread ODF extensions; – widorp.cxx, guess.cxx: handle Column/Page/Spread end zones; – guess.cxx: handle Paragraph end zone (without portions, yet). According to their typography, languages with long words need better adjustment of line break of the last full paragraph/column/page/spread lines, than simply disabling hyphenation by the recent ODF hyphenation- keep or its equivalent MS Word OOXML extension. DTP software use paragraph and column/page/spread end zones to adjust the hyphenation zones in the last lines, for example, setting Column end zone to the 150% percent of the Hyphenation zone, resulting less hyphenation, also less short words parts at the end of the columns, pages and spreads, increasing readability. Note: the default OOXML hyphenation zone 18 pt (or its MS Word variants, for example 21.25 pt) disables single letter or narrow 2-letter (li-, fi-, i.e. fi ligature) hyphenations at 12 pt font height. Setting 27 pt for Column end zone, all 2-letter hyphenation is disabled in last lines of columns and pages. Note: textflow.ui needs multiple adjustment definitions for correct work of the multiple spin boxes. Change-Id: I37bbb4da30de0ec75eb8636f70d8e16588c56ed1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183565 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2025-04-01add some more SvxFieldData to the model.xml dumpNoel Grandin
which I found useful in debugging Change-Id: I28045cbedbba14633a85fa6b4ebc0b8c02f36cc0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183580 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2025-04-01a11y: Drop unnecessary XAccessibleExtendedComponent overridesMichael Weghorn
Drop overrides of the XAccessibleExtendedComponent which just return an empty string. That is now already implemented in the base class implementations in OAccessibleComponentHelper, see Change-Id: I05547b12806a6a90b166edbe196b4bc5a27344be Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Mar 31 13:49:20 2025 +0200 a11y: Merge OAccessible{,Extended}ComponentHelper, add default impl Change-Id: Ibc3fe295eaa2dc5443ba4f8fa25a81451b7b3765 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183553 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-04-01a11y: Merge OAccessible{,Extended}ComponentHelper, add default implMichael Weghorn
Merge OAccessibleExtendedComponentHelper and OAccessibleComponentHelper by letting OAccessibleComponentHelper already implement the XAccessibleExtendedComponent interface. Add default implementations for the two XAccessibleExtendedComponent methods (XAccessibleExtendedComponent::getToolTipText and XAccessibleExtendedComponent::getTitledBorderText) that simply return an empty string. Replace all uses of XAccessibleExtendedComponent by OAccessibleComponentHelper. This simplifies the class hierarchy and prepares for further simplification in upcoming commits. Change-Id: I05547b12806a6a90b166edbe196b4bc5a27344be Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183551 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-01editeng a11y: Use OAccessibleExtendedComponentHelperMichael Weghorn
Let editeng's AccessibleContextBase derive from OAccessibleExtendedComponentHelper to make use of the logic already implemented there instead of having to implement all the XAccessible(Extended)Component and XAccessibleEventBroadcaster methods manually. Adjust the various subclasses accordingly as well. Make OCommonAccessibleComponent::addAccessibleEventListener and OCommonAccessibleComponent::removeAccessibleEventListener no longer final so that AccessibleShape can override them (to add/remove the listener for the AccessibleTextHelper object in addition to calling the base class implementation). The existing XAccessibleComponent::getBounds implementations provide the necessary logic to implement OAccessibleExtendedComponentHelper::implGetBounds, so rename those accordingly (and drop the extra guards, as the base class takes care of that). Drop all of the other overrides that are no longer needed as the implementation is now provided by the base class. No change in behavior intended or observed in a quick test with Impress and Accerciser and Orca when using the gtk3 and qt6 VCL plugins on Linux. Change-Id: I7c42a9cac1099991bc5763b87c55ace2b0fed8a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183549 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-01editeng a11y: Drop dummy XAccessibleComponent implementationsMichael Weghorn
Leave these 2 methods purely virtual in AccessibleContextBase, as this depends on subclasses overriding them to function properly. Change-Id: I52121e18f8bb0c76d8b588a7e09b3cca9f09232d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183544 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-04-01editeng a11y: Merge Accessible{Context,Component}BaseMichael Weghorn
AccessibleContextBase and AccessibleComponentBase are both subclassed by the exact same classes. Merge AccessibleComponentBase into AccessibleContextBase to simplify the class hierarchy. Drop now unnecessary overrides. This also aligns AccessibleContext further with the comphelper::OAccessibleExtendedComponentHelper class that also implements both, XAccessibleContext and XAccessibleExtendedComponent, and thus also prepares for potential refactoring to deduplicate code in those two classes in the future. Change-Id: Ia3331f2bd4563bf9cdfee35c9ea6cca91bd093cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183543 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-03-31loplugin:constparam in variousNoel Grandin
Change-Id: I874a95777aed3471675bf03acfcf05ecfcb4f830 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183531 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2025-03-28tdf#165811 calc mouse select sometimes off by one charNoel Grandin
regression from commit 11b15571475414ef853e21a6c96afa2ac81f848f Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Wed Oct 30 09:51:26 2024 +0200 convert KernArray from sal_Int32 to double Change-Id: I9266693fa8d449c3369b65c31fbb4a3d3182777f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183452 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2025-03-27tdf#165329 Improve fix of tdf#163634Oliver Specht
Broken loading of text boxes with relatives sizes is fixed here. Change-Id: I180850d746aa9e92d0de13b3eb594f3bb754899e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183341 Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de> Tested-by: Jenkins Tested-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2025-03-27Make conversion to Primitives more accessible for EditEngine/OutlinerArmin Le Grand (Collabora)
When checking how TextEdit on the Overlay may be doable in Calc I stumbled about that I initially did that based on Outliner (svx) for all DrawObjects/Draw/Impress, but it is not accessible from EditEngine. Calc again just uses an EditEngine for TextEdit in Cell, so I checked doability. Quite some stuff has to be changed, basically instead of unsing IMPL/DECL_LINK I use lambda functions now. The former callbacks were anyways exclusively used for this and had no general used case. Also simplified and cleaned up quite some other stuff, some member functions could be removed, some helper classes deleted or simplified/streamlined. This should do no change to existing decomposes or edit views, but will make it possible to move in the direction of CellEdit on the Overlay and also prepares decompositions there to allow going in the direction of primitive based paints in Calc. Change-Id: Ia9c4c1129c9579ba4870b091977082e5f0d319f8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183388 Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com> Tested-by: Jenkins
2025-03-22tdf#141415 reduce time spent loading language dataNoel Grandin
cache LocaleDataWrapper because otherwise we spend quite a bit of time doing function-pointer-symbol lookups. Change-Id: Ic1bd07dabac95a2e1bdad70cffbc2b4cabdc62ed Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183221 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2025-03-19Rename con-const vcl::Font property getters for clarityMike Kaganski
There are two sets of getters there; and the non-const ones may copy the COW mpImplFont, and may call its AskConfig. The name overload is unfortunate. It is not obvious at the call site, which of the two will be called; and what is different. IMO, the way to fix it would be to keep only one set of getters (the const one), and make the call to AskConfig explicit (in the places that set font name, and know that resolution of other properties will be needed). But in this change, I only rename the non-const getters, making sure to keep the behavior unchanged (at least the intention is to have a non-functional change, meaning that the places that called non-const overload, now use the renamed functions), to make it clear where we actually may copy and initialize it. Change-Id: I9a5cd91d5c1c0de7ff8577b9b982d165e4cdd2c1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183116 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins