summaryrefslogtreecommitdiff
path: root/sw/source/core
AgeCommit message (Collapse)AuthorFilesLines
3 hoursrather return optional data via an optional paramNoel Grandin1-8/+7
instead of a combination data of a bool param and an optional data in a struct Change-Id: I67338b55fc38bbe053e1e13dea92f6c76389663b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187773 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
14 hoursDon’t calculate text bounds needlessly in OutputDevice::GetTextArray()Khaled Hosny1-2/+2
Calculating text bounds can be a costly operation (e.g. for fonts with CFF table since it has to be calculated from outlines), and leads to loading potentially large font tables (which is especially an issue on macOS where we copy font table data when loading, unlike other platforms where HarfBuzz mmap’s the file). It seems that the text bounds are only used in one place, so this change calculates the bounds only when requested. Change-Id: Ib9017a58dda30b4cc07ceec087cbf4ad45d56d00 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187683 Tested-by: Jenkins Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
17 hourstdf#167297 sw: Add support for DOC/DOCX script type hintingJonathan Clark2-2/+2
Extends the Writer script type hinting mechanism to natively support DOC/DOCX script type hinting. Implements the OOXML w:hint attribute, in both import and export. Implements the DOC sprmCIdctHint property, in both import and export. This change also removes the previously-implemented IdctHint emulation, based on breaking the input text into smaller spans. Writer's script type hinting mechanism is sufficient to replace this code. Change-Id: I08f934358164dc5814bfac010d4fac9b3334f947 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187755 Tested-by: Jenkins Reviewed-by: Jonathan Clark <jonathan@libreoffice.org>
26 hoursconvert NfEvalDateFormat to scoped enumNoel Grandin1-1/+1
Change-Id: Ief6211412cd73e59b7380d0f5ca536a38354e900 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187702 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2 daysadd more constnessCaolán McNamara2-2/+2
Change-Id: I94333a57043743dd9d6924d20c85a2a5484fe8d0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187615 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2 daysuse a different memory allocation strategy for cachesCaolán McNamara1-4/+18
redirect cache related allocations to the same place to attempt to put them in separate pages from other allocations to release that cache memory back to OS. Change-Id: I384658a3d652e668095b69e5a62eae5b972b5857 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187282 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2 daystdf#166975 sw: fix expansion of list level format with repeated levelsMichael Stahl1-22/+53
SwNumRule::MakeNumString() would only replace each level's placeholder once in the format string; rework this so it iterates the whole format string. Change-Id: I1d0c5bf5c60c3003cc0257acfb69b37d209be617 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186977 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit e200c729797e7f3c19e958f9796a1d0fbae829d1) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187020 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
2 daysconvert REFERENCEMARK to scoped enumNoel Grandin3-48/+47
Change-Id: Ic4adb7353e4688252a684918b29b37aed761b396 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187597 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
3 daysconvert REFERENCESUBTYPE to scoped enumNoel Grandin7-61/+68
and move it to its own header file, so I can include that header file in one of the sw/inc/ header files that everything uses, without needing to pull in all of reffld.hxx which flushes out a minor issue in IMPL_LINK_NOARG(SwFieldRefPage, TypeHdl, weld::TreeView&, void) the code does nFlag = REF_SETREFATTR; but then nFlag is treated as one of the REFFLDFLAG_* constants However, REF_SETREFATTR evaluates to zero, and nFlag was zero at that point, so that code is effectively useless, so remove it. Change-Id: I620661ab932a4a85f6203365e4e877c3d8c97078 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187596 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
3 daysmake scoped enum for dbfield subtypeNoel Grandin3-34/+34
Change-Id: I58243747eb317578c6f32a064921453bf742d2ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187595 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
3 daysconvert SwGetSetExpType to scoped enumNoel Grandin12-132/+136
and SwTableFieldSubType into another enum, since it only uses a subset of the SwGetSetExpType values. and adjust DocumentFieldsManager::UpdateExpFieldsImpl where we are calling SwUserFieldType::Expand with a formatId of SwGetSetExpType::GSE_STRING. This cannot be correct but the code goes back to initial import. Replace it with the constant 1 which does the same thing, and probably maps to some default number format. Change-Id: I6c5c4b8f42cb2239ba8e1da7eb42a8adb8f7c2e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187594 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
3 daysconvert SwInputFieldSubType to scoped enumNoel Grandin3-14/+13
and fix what looks like a bug in SwFieldPage::InsertField where it was handling the SwFieldTypesEnum::Input case, but casting to SwSetExpField ??? Unfortunately the dodgy code dates to initial import. Change-Id: Ic408e2e908a6398bcfc601c4ed4eb75c0d75e32d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187593 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
3 daystdf#167409 set alt. text to the internal hyperlinks in a TOCTomaž Vajngerl2-13/+20
The alt. text that is set is the TOC entry text. Change-Id: I8a9012cd7a6155f0672e0e8019ec1183d01cdcb6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187556 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Jenkins
3 daysuse gperf -fpic friendly version modeCaolán McNamara1-4/+7
nm -S --size-sort --print-size instdir/program/libmergedlo.so| grep ' [Dd] ' | c++filt | tail -n 10 before: ... 00000000000027f0 d aFmFormShellSlots_Impl ... 0000000000002920 d pRGBTable ... 0000000000003b80 d vcl::pdf::BuildinFontFace::m_aBuildinFonts ... 0000000000004140 d C.16.0 ... 0000000000004d80 d (anonymous namespace)::aMethods ... 00000000000066a8 d aRTFTokenTab ... 000000000000cf60 d xmloff::(anonymous namespace)::wordlist ... 000000000000cf60 d xmloff::token::getNames(int)::{lambda()#1}::operator()() const::sppcTokenNames ... 00000000000172c0 d oox::(anonymous namespace)::wordlist ... 00000000000172c0 d oox::TokenMap::getUtf8TokenName(int)::{lambda()#1}::operator()() const::sppcTokenNames after: ... 0000000000002790 d STR_ARR_SVT_LANGUAGE_TABLE ... 00000000000027a8 d RID_STRLIST_FUNCTION_NAMES ... 00000000000027f0 d aFmFormShellSlots_Impl ... 0000000000002920 d pRGBTable ... 0000000000003b80 d vcl::pdf::BuildinFontFace::m_aBuildinFonts ... 0000000000004140 d C.16.0 ... 0000000000004d80 d (anonymous namespace)::aMethods ... 00000000000066a8 d aRTFTokenTab ... 000000000000cf60 d xmloff::token::getNames(int)::{lambda()#1}::operator()() const::sppcTokenNames ... 00000000000172c0 d oox::TokenMap::getUtf8TokenName(int)::{lambda()#1}::operator()() const::sppcTokenNames See also: https://www.akkadia.org/drepper/dsohowto.pdf Change-Id: Ic1141c466d06d79d71e573c5f283cd1f089d7067 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187578 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
3 daysConvert SwUserType to scoped enumNoel Grandin5-32/+32
Change-Id: I83d2b289c1a2b66111668ae1e8e96589c4301f7a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187533 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
3 daysConvert SwDateTimeSubType to scoped enumNoel Grandin4-24/+24
Change-Id: I37570dc608046b398d9567a114149ee2c4e89763 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187532 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
4 daystdf#143157 - Include expanded text in index fieldsAndreas Heinisch1-9/+18
Include expanded text in the tooltip of index fields. Change-Id: Ife87a4f09e3cc2511637bfbf5b2f44e6598bfbb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187293 Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de> Tested-by: Jenkins
4 daysConvert SwExtUserSubType to scoped enumNoel Grandin4-27/+27
Change-Id: I1260a69e5472bdc8ee0846bd8053dd9593cfe28a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187503 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
5 daysConvert SwPageNumSubType to scoped enumNoel Grandin3-15/+15
Change-Id: I3e1a77d6f6fecf577375a82998f2db8a2991f8e8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187502 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
5 daysConvert SwDocInfoSubType to scoped enumNoel Grandin5-90/+89
Change-Id: If341422ae097caacdfd4cd4d734d478de0d83f72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187501 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
5 daysConvert SwDocStatSubType to scoped enumNoel Grandin6-36/+36
Change-Id: I281b39e9f37ae4024a67a3f521f0c84903b2ef27 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187500 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
5 daysmove m_nSubType field in SwField down to subclassesNoel Grandin8-154/+268
because it is really different types depending which subclass it belongs to. Here I do not try to apply correct types to all of the fields that are created in the subclasses, only a couple of the obvious ones. Unfortunately, some of the code is just too awkward to fully re-structure, so I add some SwField::GetUntypedSubtype() method to allow some code to get/set untyped format values. Change-Id: I7f03d8de91606116f152ead64a28aa50d09e896b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187490 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
5 daysConvert SwJumpEditFormat to scoped enumNoel Grandin6-19/+20
Change-Id: I49a4a6805d34f446b4357c99e9a1857d2a6d44e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187489 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
5 daysConvert SwAuthorFormat to scoped enumNoel Grandin4-21/+22
Change-Id: I9b96186f0eb215ec85d65baa4c0f1f89129fb02b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187488 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
5 daystdf#166319 sw interdependent redlines: fix redo of accept of ins-then-fmt's fmtMiklos Vajna2-2/+13
The bugdoc has <ins>AA<format>BB</format>CC</ins>, go to middle of BB, accept, undo, redo: there is no format redline in the document, but there should be one. What happens is that the "accept" action creates an SwUndoAcceptRedline with the default depth = 0, but then it carefully calls lcl_DeleteInnerRedline() in sw::DocumentRedlineManager::AcceptRedlineRange() instead of a plain accept. The undo action already knows how to only accept the underlying redline, so fix the problem in sw::DocumentRedlineManager::AcceptRedlineRange() by correctly recording the UI action with depth = 1, which gives us both working undo & redo. The exec of the undo action's redo calls sw::DocumentRedlineManager::AcceptRedline(), which now calls the same lcl_DeleteInnerRedline() as the original UI action, so this looks consistent now. Change-Id: Ibb21c0745f3dd0aacec7cf7448c7c85245dbee69 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187480 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
5 daysConvert SwFileNameFormat to scoped enumNoel Grandin3-45/+46
Change-Id: I128f322fa09531c2dc70202910392f15e23f70c8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187462 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
5 daysConvert SwChapterFormat to scoped enumNoel Grandin7-45/+50
Change-Id: I678a5a32f41de8b61b923c1513264dcc9ee9c2a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187461 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
5 daysconvert SwCaptionDisplay to scoped enumNoel Grandin3-11/+11
Change-Id: I4799d87d87f73414251425b78d242ef5faa59ae8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187471 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
6 daysmove m_nFormat field in SwField down to subclassesNoel Grandin13-108/+201
because it is really different types depending which subclass it belongs to. Here I do not try to apply correct types to all of the fields that are created in the subclasses, only a couple of the obvious ones. Unfortunately, some of the code is just too awkward to fully re-structure, so I add some SwField::GetUntypedFormat() method to allow some code to get/set untyped format values. In the process, fix a large harmless bug in SwJavaEditDialog and SwScriptField where is was confusing the m_nFormat field with the m_bCodeUrl field. Change-Id: Ie055d907b50d07e38c131c14ae195b426b314700 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187431 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
9 dayssw: add fallback for page styles using UIName identifiersTibor Nagy1-2/+4
Change-Id: I3cbbaaa54784f1b11a34c7711df12770885ffb8f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187354 Tested-by: Jenkins Reviewed-by: Nagy Tibor <tibor.nagy@collabora.com>
9 daysflatten SwAccessibleParagraph::GetFieldTypeNameAtIndex a littleNoel Grandin1-136/+139
Change-Id: Ic622fd0312de4b7954ad705f66a2579c655f54ae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187330 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
9 dayssw: use SAL_RET_MAYBENULL in GetSfxViewShell()Xisco Fauli4-21/+33
after commit 7ac9630d2258ae4b40917b79b38fa6cab0842078 Author: Caolán McNamara <caolan.mcnamara@collabora.com> Date: Tue Jul 1 09:24:54 2025 +0100 null GetSfxViewShell() deref Change-Id: If7e5019cf49917d163b36fc1aab24de64e10c4ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187242 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
10 daystdf#166842 do not use LineColor==COL_TRANSPARENT...Noel Grandin2-8/+5
.. on OutputDevice if that OutputDevice does not support alpha Change-Id: Ic912237eda97beec6276c6c837f3b95fe92aea50 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187275 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
11 daystdf#167329: Make sure to invalidate inf flags properlyMike Kaganski4-3/+14
Since commit b6bcc7ac278e0db22df02707789730ec123bf934 (tdf#166871: drop mnMaxParaPerPage hack, 2025-06-07), an assertion fails in some cases (see https://gerrit.libreoffice.org/c/core/+/186243/3#message-edb2ace35947927748d0bd37a36d95f2ddf67217 ). The call stack is: #19 __assert_fail in /lib64/libc.so.6 #20 FindFrameInBody(SwAnchoredObject const&) at /home/caolan/LibreOffice/core/sw/source/core/layout/objectformattertxtfrm.cxx:605 #21 SwObjectFormatterTextFrame::CheckMovedFwdCondition(SwAnchoredObject&, SwPageFrame const&, bool, unsigned int&, bool&, bool&) at /home/caolan/LibreOffice/core/sw/source/core/layout/objectformattertxtfrm.cxx:723 (discriminator 1) #22 SwFlyAtContentFrame::MakeAll(OutputDevice*) at /home/caolan/LibreOffice/core/sw/source/core/layout/flycnt.cxx:448 (discriminator 1) #23 SwFrame::PrepareMake(OutputDevice*) at /home/caolan/LibreOffice/core/sw/source/core/layout/calcmove.cxx:397 #24 SwFrame::Calc(OutputDevice*) const at /home/caolan/LibreOffice/core/sw/source/core/layout/trvlfrm.cxx:1858 #25 SwFlyFrame::Calc(OutputDevice*) const at /home/caolan/LibreOffice/core/sw/source/core/layout/fly.cxx:3441 #26 SwObjectFormatter::FormatLayout_(SwLayoutFrame&) at /home/caolan/LibreOffice/core/sw/source/core/layout/objectformatter.cxx:210 The problem is, that some frames don't get their flags invalidated on move, and then use some flag state possibly calculated outside of layout. E.g., creation of table in InsertCnt_ would add cells and insert their content in SwCellFrame ctor; during that, the cell has no upper, and any attempt of a lower to calculate its inf flags would set mbInfBody to false. In SwFlowFrame::PasteTree, pStart may also have inf flags inconsistent with the target position. This change makes SwFrame::InvalidateInfFlags also invalidate these flags in lowers (for layout frames), because obviously, when upper neest to update the flags, so should do lowers. This is similar to what was done in lcl_InvalidateInfFlags, which got simplified. Change-Id: Ic4898791bacef46415985b43f44fddfd533051f2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187240 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
11 daysnull GetSfxViewShell() derefCaolán McNamara1-3/+3
#0 0x00007d2c05299b40 in SwViewShell::SizeChgNotify (this=this@entry=0x3cd9f220) at sw/source/core/view/viewsh.cxx:1264 #1 0x00007d2c04e7bfb8 in AdjustSizeChgNotify (pRoot=pRoot@entry=0x3c9a1af0) at sw/source/core/layout/pagechg.cxx:894 #2 0x00007d2c04e7fa5d in SwRootFrame::CheckViewLayout (this=0x3c9a1af0, pViewOpt=pViewOpt@entry=0x0, pVisArea=pVisArea@entry=0x0) at sw/source/core/layout/pagechg.cxx:2490 #3 0x00007d2c04e81819 in SwPageFrame::Paste (this=this@entry=0x3cf5c9b0, pParent=pParent@entry=0x3c9a1af0, pSibling=pSibling@entry=0x3cebf0d0) at sw/source/core/layout/pagechg.cxx:1010 #4 0x00007d2c04e8498b in (anonymous namespace)::doInsertPage (pRoot=0x3c9a1af0, pRefSibling=0x7ffce60d5450, pFormat=<optimized out>, pDesc=<optimized out>, bFootnote=<optimized out>, pRefPage=0x7ffce60d5458) at sw/source/core/layout/pagechg.cxx:1396 #5 0x00007d2c04e852a4 in SwFrame::InsertPage (this=this@entry=0x3cebe640, pPrevPage=0x3cebb780, bFootnote=bFootnote@entry=false) at sw/source/core/layout/pagechg.cxx:1475 #6 0x00007d2c04eb3787 in SwFrame::GetNextSctLeaf (this=0x3cebe640, eMakePage=MAKEPAGE_INSERT) at sw/source/core/layout/sectfrm.cxx:1853 #7 0x00007d2c04e35530 in SwFlowFrame::MoveFwd (this=this@entry=0x3cebe720, bMakePage=<optimized out>, bPageBreak=bPageBreak@entry=false, bMoveAlways=bMoveAlways@entry=false) at sw/source/core/layout/flowfrm.cxx:2148 #8 0x00007d2c04e24732 in SwContentFrame::MakeAll (this=0x3cebe640) at sw/source/core/layout/calcmove.cxx:1930 #9 0x00007d2c04e2184c in SwFrame::PrepareMake (this=0x3cebe640, pRenderContext=0x3c95db30) at sw/source/core/layout/calcmove.cxx:396 #10 0x00007d2c04e3abe4 in CalcContent (pLay=pLay@entry=0x3ce01530, bNoColl=bNoColl@entry=false) at sw/source/core/layout/fly.cxx:1764 #11 0x00007d2c04ee2079 in SwLayoutFrame::FormatWidthCols (this=this@entry=0x3ce01530, rAttrs=..., nBorder=nBorder@entry=0, nMinHeight=nMinHeight@entry=23) at sw/source/core/layout/wsfrm.cxx:4013 (gdb) print mpSfxViewShell $3 = (SfxViewShell *) 0x0 Change-Id: I2e0f21a442791260e8b79e38965c8da7e41656cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187226 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
11 daysSimplify a bitMike Kaganski1-2/+2
Initialize the variable on declaration; use clearer 'while' instead of 'for'. Change-Id: I461a3b0556e362006a47245dbc504b46807a23c8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187231 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
11 dayssw: factor out common codeXisco Fauli1-75/+42
Change-Id: If92f5254d27426ada0b30b97e6d417f60bab1a0d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187232 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
11 daysSimplify SwXRedlineMike Kaganski2-19/+17
It doesn't need own m_pDoc (SwXText has one already); and its ctor doesn't need an SwDoc& argument (it is deducible from rRedline). Change-Id: I93e72ba824a697df2d3654336c3f5c44192083eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187230 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
12 daystdf#167298 tdf#166113 sw word spacing: add word spacing indicatorLászló Németh4-11/+49
tdf#167298: As an advanced feature for typography and related development – including bug fixing –, add visualization for justified text lines with too big word spacing. tdf#166113: fix bInteropSmartJustify by adding bFullJustified to avoid unnecessary extra calculation for the last paragraph line. (Regression since commit 529755f0919217a84a12daad0fddfddd1124f0e9 "tdf#166113 sw smart justify: adjust algorithm for interoperability", detected by the word spacing indicator). The red word spacing indicator line is positioned before the justified text line, and its width is the extra space of a space character over the maximum word spacing. For example, if the font-defined space width is 3 pt, the maximum word spacing is 150%, spaces expanded to 6 pt in the justified line results a 6 pt - 3 pt * 1.5 = 1.5 pt width word spacing indicator. To enable the word spacing indicator in a justified text, 1) Open "Tools" -> Options" -> "Advanced" -> "Open Expert Configuration"; 2) search for "ShowWordSpacingIndicator"; 3) double-click on the config entry (or press Enter) to set it to True; 4) Enable Formatting Marks (Control-F10). Follow-up to commit 5a48070f5904c51dc9e7bbad4213d802fd4bc89b "tdf#126154 sw offapi xmloff cui: add min/max word spacing" and commit 7d6696757dcdfa3cee481ac7795a91b2b47da363 "tdf#159923 sw cui offapi xmloff: add custom word spacing". Change-Id: I315b5e6b8239f4fdc8e69eb45fc292b8d5891138 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187199 Reviewed-by: László Németh <nemeth@numbertext.org> Tested-by: Jenkins
12 daystdf#166842 do not use FillColor==COL_TRANSPARENT...Noel Grandin4-6/+23
.. on OutputDevice if that OutputDevice does not support alpha Change-Id: I52f8a496127462deecba9cf6fd19f827466d16cb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187181 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
13 daysUse more concrete type to avoid a queryMike Kaganski1-9/+3
And drop a comment obsoleted by commit 1ac5353bbb25bd9ff0ab0e157b3dbd0da325480a (Use weak reference to SfxObjectShell in SfxEventHint to avoid use-after-free, 2024-03-11). Change-Id: I7512328fea6c6bd5c893163616826c571e7b78bc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187154 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
13 daystdf#156061: don't hide DB fields when not in mail mergeMike Kaganski2-1/+2
Original implementation (commit db04be037b611e296ef9f2542322c52ed82d7a2b tdf#35798: Hide empty Database fields' paragraphs (+ compat option), 2018-05-20) made empty DB fields serve as "hidden paragraph" field, when the field text is empty. The feature is created for mail merge, where the generated documents adapt to varying set of data in each record. But that broke the case where documents having DB field are used in non-mailmerge context, like viewing/printing such documents. Users expect such documents to show the lines. This patch changes the behavior, so that empty DB field only hides paragraphs when mail merge is being performed. When the resulting document converts DB fields to static text, the hidden paragraphs get removed. But if the generated documents still have DB fields, then the paragraphs in it will not be hidden, when opened later. This matches user expectations, and behavior of other apps, better. This behavior change required to change respective unit tests in sw/qa/extras/mailmerge/mailmerge.cxx from *_FILE_* to *_SHELL_*: the latter creates a static-text output, while the former produces files with fields. (IMO, that is a bug.) Change-Id: Id796ad8fe413372377ce22d8da4931110718c8c2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187150 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2025-06-28Simplify OUString creation from SvMemoryStreamMike Kaganski2-27/+7
No need for a fallback to Seek / ReadBytes if !p. No need to write null character, nor to count to it: we know the size. Change-Id: If85dd953862ae60e32f33af1ddd4d9099f6885f5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187124 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2025-06-27tdf#167133: Be prepared that frame's object's anchor may be nullMike Kaganski2-4/+14
... between the time the object was removed from the model, and the layout update. Change-Id: Ieb2f42c18794090cdc8786d5cffd9ae6e2b8f147 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187071 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2025-06-27sw a11y: Return OAccessible in SwViewShell::CreateAccessiblePreviewMichael Weghorn2-6/+5
... instead of a reference to the abstract XAccessible interface. This will allow to also switch/simplify callers in upcoming commits. Change-Id: I0d33c057c5d92a4a20e621a7d3327c42f1615391 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186990 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-06-27sw a11y: Return OAccessible in SwViewShell::CreateAccessibleMichael Weghorn2-5/+5
Change-Id: I4b482b6f29c892a8ec595ea9a17d9f4384dbfca7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186989 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-06-27sw a11y: Let SwAccessibleContext subclass OAccessibleMichael Weghorn4-130/+16
Make SwAccessibleContext an OAccessible subclass. This allows to reuse logic implemented there for the XAccessible, XAccessibleContext, XAccessibleComponent and XAccessibleEventBroadcaster interfaces. SwAccessibleContext::getBoundsImpl implements what is needed to implement OAccessibleComponentHelper::implGetBounds, so simply call that method from there. Drop the SolarMutexGuard at the start of SwAccessibleContext::getBoundsImpl because the base class takes care of that when calling OAccessibleComponentHelper::implGetBounds. Explicitly lock the SolarMutex in SwAccessibleContext::getLocationOnScreen instead, which also calls SwAccessibleContext::getBoundsImpl that doesn't lock the mutex anymore now. No change in behavior expected or seen in a quick test with Writer and the gtk3 and qt6 VCL plugins on Linux together with Accerciser and the Orca screen reader. Change-Id: I2b75ccd3eed57f276feab303d63038299ceb90d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186988 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2025-06-26loplugin:constantparamNoel Grandin3-6/+5
Change-Id: Ifd973d558a73954d4b240b4d740739aa0a0a077e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187044 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2025-06-26sw doc model xml dump: show the item set of a format redlineMiklos Vajna1-0/+31
Turns out Writer can have a format redline on top of direct formatting, but this wasn't visible in the doc model dump, add this. Change-Id: I863136da16935ed93772f49934618bb96cefbbc4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187056 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2025-06-26sw a11y: Use vcl::unohelper::ConvertToAWTRectMichael Weghorn1-4/+2
Change-Id: I7ec2b48d7f5cf0482ade830caf50fd01fda64369 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186965 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>