summaryrefslogtreecommitdiff
path: root/editeng/source
AgeCommit message (Collapse)Author
19 hoursLOCRDT editeng,sfx2,sw: experimental yrs collabMichael Stahl
This can be enabled in configure via --with-yrs=...; see also README.yrs Currently this is hardcoded to run over a local named pipe. Everything related to editengine is implemented in EditDoc and made accessible via its wrapper classes; everything related to communication and accessing sw's comment is implemented in sw::DocumentStateManager. The acceptor starts in SwView::SwView(), once SwPostItMgr exists. There is a hack in SfxFrameLoader_Impl::load() to fetch the document that the accepting soffice has loaded, and load it in the connecting soffice as well. Change-Id: I89476b5864b70f479bcf15989374c1c65b5da9ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175652 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
22 hoursCEOO: CellEditOnOverlayArmin Le Grand (Collabora)
Instead of using EditView's Paint directly to Window I changed this now to using the Overlay that is available in all applications. This allows to have less repaints of the Calc View since the Overlay has a copy of the area it is working overlayed. It also allows to get away from one of the last areas where XOR selection was used since EditView/EditEngine have no better way to do this. Selection is now visualized using the OS'es choosen SelectionColor, as in all other apps. I could also get rid of the flush() of the OverlayManager that was needed before and caused some problems (see tdf#165621 and associated tasks). A failing UnitTest showed that OverlayManagerBuffered needs to be aware when no CompleteRedraw was done yet and thus no background data exists and refresh makes no sense. This may happen when there is no redraw/UI e.g. UnitTests, but still an OverlayManager is used and together with a Reschedule (many possible reasons) that refresh might be triggered. Made access to EditView in OverlayObject no longer dependent on ActiveView, that is not always the one with the EditView. Now using a combination of ScTabView and ScSplitPos for accesses. Asserting now if no EditView -> is mandatory. Continuing going through CppunitTest_sc_tiledrendering UTs, one more identified. Have to re-activate EditViewInvalidate rect forwarding since the Invalidate is needed for sc tiled rendering tests, but not for sd tiled rendering tests. Added that to the impl of EditViewCallbacks using LibreOfficeKit::isActive(). Change-Id: I41f5448bfbabfaae4858c7617478771053c2cd77 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184830 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
32 hourstdf#164954 fix mis-spelled "punktuation" in variable name in TextPortion.hxxSimon Chenery
Change-Id: I0d93d4e75652dbe2cca8227f95883e26b25faf76 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184968 Reviewed-by: David Gilbert <freedesktop@treblig.org> Tested-by: Jenkins
8 daysa11y: Use OAccessibleComponentHelper::isAliveMichael Weghorn
Use it to implement (inverted) logic in AccessibleContextBase::IsDisposed and replace uses of the latter in subclasses by using the (protected) OAccessibleComponentHelper::isAlive directly. Change-Id: Ib033097dfac9e7a986cb0334caf7ac568ad4300a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184793 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
13 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
2025-04-17crashtesting: 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>
2025-04-17Remove 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>
2025-04-16tdf#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>
2025-04-15tdf#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
2025-04-15loplugin: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>