10058 Commits
Author SHA1 Message Date
Armin Le Grand (collabora) 5519a3d407 Correct StyleSheet handling when cloning to different Model II
Until now the 'local' StyleSheet got set, but that may
not be the same as the original. It was/gets identified just
by searching by name and type, not comparing content.

What to do? We could...

(a) the Style-Friendly way:
 - check if StyleSheet is identical
  - if not, create a new in-between StyleSheet hosting missing Items
  - if yes, use, done.

(b) the pragmatic/practical way:
 - Just hard-attribute the Items that are detected as different
   similar to what BurnInStyleSheetAttributes does/did, but only
   for a view differing Items

(b) is the most simple for now, but will lead to more hard
attributes. The other possibilities will be better in the
long term. For now, I will use (b).

Note that there are more cases in that VERY complex and grown
stuff emerging from SdDrawDocument::PasteBookmarkAsPage. More
things will need to be fixed, see this as a 1st step.

Needed to adapt postProcessAfterCloneToDifferentModel due to
UT testTdf96206 failing, see comment there for details.

That 1st implementation showed weaknesses with those Items
critical and only on MasterPages, so decided to give up on
that and implement ContentCompare to SdPage::Equals. That
was easier than thought: No parameter needed, only used by
InsertBookmarkAsPage_FindDuplicateLayouts::operator(). Thus,
SdPage::Equals needs no change, just SdrObject::Equals.

Due to still problems with Items corrected in Objects on
MasterPages I will for now exclude this.

Could now isolate remaining problems, these are defaults
and/or PresObj things on MasterPages. Important is that I can
completely correct all Items for all Objects in
postProcessAfterCloneToDifferentModel. I can react to these
false-positives in the ContentCompare in SdrObject::Equals.

Signed-off-by: Armin Le Grand (collabora) <Armin.LeGrand@collabora.com>
Change-Id: I10e17c8d6a893dbe92ab716182f07bafce1f3284
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/6595
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Armin Le Grand <armin.legrand@collabora.com>
(cherry picked from commit 92ffaeac04c5c8586006b026f29ce12fba3674f1)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211729
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-05 08:52:54 +02:00
Xisco Fauli 7003eb6fc6 fix headers
Change-Id: Ia2732cc041367bc113654bc424ea6621f3961e9f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211724
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-05 08:52:04 +02:00
Andrea Gelmini 3bc01f0c99 Fix typos
Change-Id: I3fb0e9e9d2b16195bf9445d01da8b5936c148544
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211770
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-10-03 10:23:57 +02:00
Mike Kaganski c5592ec7db tdf#163240 sw: build a link's rectangles from its line pieces
Exporting a hyperlink laid out down the page, over more than one line,
produced link annotations a PDF/UA validator rejects: on a vertical page
whose link wraps, two of the three annotations carried no structure
element, and veraPDF reported both under ISO 14289-1 7.18.5:

 A Link annotation is an Artifact or is nested within null tag
 (standard type = null) instead of Link

Export a document whose hyperlink ends in a ruby and runs over several
lines down the page to PDF with tagged PDF enabled, then run veraPDF
over the result in PDF/UA-1 mode to see it.

An annotation is tied to a structure element by the text painted inside
it, so one holding no text of any line is tied to nothing. That is what
the region CalcFrameRects returns can hand out: it covers the selection
in whatever rectangles fall out of inverting the pieces it was built
from, and one of those can span several lines while another holds a ruby
and none of the text beside it.

Let CalcFrameRects return those pieces as well, and the holes it cuts
afterwards, and take the shape from the pieces and the area from the
region: the pieces follow the lines and, once the overlapping ones are
joined, no longer overlap each other, so every part of the region falls
in exactly one of them. What tdf#157816 requires still decides each
part, and the parts a piece has left are joined unless the join would
reach over a hole - a fly, a drop cap - that the selection excludes on
purpose.

Every annotation now holds text of the lines it covers, so every one of
them is tagged, and a ruby sits inside the rectangle of the line that
carries it. The narrowing to a portion's band, the growing over a ruby
portion and the joining of tiling rectangles that
Ide896d00c7619b772802762e85abfb6e2cf7ef0a ("tdf#163240 sw: let a link's
rectangle cover the ruby it ends in") added are all gone. On the
horizontal document that change was measured against, the exported
rectangles are the same to the last digit.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I9faf2bc10af491576cc2f4ba5f3e3433eb03d16c
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13767
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit e77b1d25d3601315f80169e4e811d74ef2ff0374)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211704
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-02 09:52:04 +02:00
Neil Roberts b4a5600843 Related tdf#173585 Assert that pointer is not null when deref SwUnoCursor
Changes SwUnoCursor::operator* to use shared_ptr::operator* so that it
will assert that the pointer is not null. This should help catch cases
that were relying on undefined behaviour to get a pointer to the
returned reference.

Change-Id: If90db9404a34fb08bfef506eb00ebd99fb82406b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211698
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-10-02 08:23:55 +02:00
Mike Kaganski 4998ea8631 sw: emit a Ruby's RB before its RT
ISO 32000-2 Table 369 makes the order normative: a Ruby shall contain
one RB followed by an RT, or by RP, RT and RP. A ruby's two sub-lines
paint in visual order, though, and each opened its structure element as
it painted, so an exported ruby held its RT before its RB. PAC 2026
reports that as two errors per ruby; veraPDF does not report it.

An element is ordered among its siblings where its type is set, not
where it is painted, so both kids are created and typed before either
sub-line paints, and each sub-line then enters the kid already created
for it.

Which sub-line carries the annotation follows OnTop, while bRubyTop only
reflects where a squared grid puts the annotation and is true everywhere
else. Keying the role off bRubyTop tagged the base of a ruby positioned
below outside a squared grid, or to the right, as the RT and its
annotation as the RB, so both the role and the element follow OnTop now.
A squared grid with the ruby text below was already right, bRubyTop and
OnTop agreeing there.

The kids are created only where BeginInlineStructureElements would enter
them: a ruby in the repeated headline row of a follow table would
otherwise leave an empty RB and RT on the table, once per following
page.

testLinkWithRuby asserted only that both kids are present, the order
being wrong when it was written; it compares them in order now.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I8e38a3544008f79939d7d0795c4808a1a72caad7
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13402
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 65c62bc31aff793465f31ab6172c118921fe9d51)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211690
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 22:41:28 +02:00
Attila Szűcs bb952370f7 tdf#169795 sw: fix crashes around tracked changes in cells with formula
Copying a cell over another one with change recording on could crash, or
destroy the tracked change it had just recorded when the target cell had a
number format.

The root cause was that formulas and formatted numbers overwrite
existing cells and destroy some tracked changes..
The cursor could point to a character that is not exist anymore.

So, first i made some cursor position fix in some key points
to avoid some crashes.

Then disabled tracked changes when a cell with formula is changed.
Every time it was recalculated, it generated a new tracked change.
Normally if we want it to be tracked, we should track the formula inside,
not the visible value .. but we don't have that type of tracked change.

ChgTextToNum() could also generate lost tracked changes:
If we copied a formatted number cell content to an other similar cell,
(for example a currency like $1,000.00 to $10.00)
by replacing the text ... then at first it generated a cell content like
$1,000.00($10.00)
where ($10.00) is a delete change..
Then the ChgTextToNum() reformatted the cell.. and overwritten it with
the $1,000.00 ... so we lost the delete change.

now i changed it so it can keep tracked deletion changes as well
(it was able to store some insert changes)
and then it checked if the format is fine for the real text ..
If it is, then it will leave it.. so tracked changes survive.

If the format is not good, then i keep the old way of working to
replace cell with the new value... and make it 1 insert tracked change

I do this to avoid complex problems.. because at format changes
a lot of things can change.. position of the characters ..
and it could be a confusion where the old delete change should start from.
It would need more planning to figure out a way to handle it.

Side note: in some cases if we modify the value of the formatted number cell
to something that does not fit the format, it can lose the formation
and change to pure text. (so all track changes will work on it)
like if you change this: $1,123,234.00 -> $1,123234.00
(This is not my change. i just mentioned this behavior.)

Signed-off-by: Attila Szűcs <attila.szucs@collabora.com>
Change-Id: I152ec4720ec8e133800186c7e5787fe0f6954fc8
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13456
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com>
(cherry picked from commit 699b9cb056cb283fc2699763e1a2340e12680c3f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211684
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 21:37:42 +02:00
Aron Budea 2bb3fe5cce cool#16124 Should be able to edit text after selecting image in bg
When image is wrapped through in document body.

Separate part of SwFEShell::ShouldObjectBeSelected()
 to SwFEShell::IsTextOverBgObjectAt(), and use it to detect
 text overlapping background image.
Handle case when DocumentSettingId::PAINT_HELL_OVER_HEADER_FOOTER
 is set. (see eg. SwFlyFrame::InitDrawObj())

Not part of this change: updating mouse pointer over objects/text.

Related to b860aea9d6,
which introduced special handling of
PAINT_HELL_OVER_HEADER_FOOTER for DOCX compatibility.

Change-Id: I571942a43c3c1d5a5be5906fcce08640739e6493
Signed-off-by: Aron Budea <aron.budea@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/11523
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 3bae82eb865b2568506417349d2f3a62bfd775e8)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211680
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 21:36:45 +02:00
Michael Meeks afea7eceec sw: forward declare SwCharFormats in doc.hxx.
Out-line the one inline: FindCharFormatByName that needed
charformats.hxx - saving ~1% of sw compile time over ~600
modules, most of the cost being boost multi_index
instantiation for SwCharFormats.

Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: Ie97b073efd225db873c7c17c7a064ef2d171b89b
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/12943
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit 6858f88c20ed188157c5af932469a342e82bf985)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211356
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 08:42:34 +02:00
Michael Meeks 7b04a0a0cf sw: forward declare sw::FrameFormats in doc.hxx.
Forward declare the template and repeat the TableFrameFormats
typedef to drop the frameformats.hxx include, which gifted us
boost multi_index headers and libxml/xmlwriter.h into
every user of doc.hxx.

clang -ftime-trace suggests this is 0.75% of the sw compile.

Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I7863a8b59491f34d541944f252ec22ece0046b24
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/12941
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit c38556dd61c5896d667767d125c59a1e2094f704)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211354
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-29 21:16:39 +02:00
Julien Nabet aec77a1a64 tdf#173496: use current page for by default range
The patch concerns Writer but it should help for Calc and Impress/Draw later
for adding "Current sheet"/"Current slide" option since we change vcl part too.
I used the help from GPT 5.6 Luna to:
- find root cause (print mechanism is quite complicated)
- find the fix

I made several tests but can't pretend I tested everything (far from it)

There are 2 main parts in the patch:
1) UI : add STR_PRINTOPTUI_PRINTCURRENTPAGE in sw + modify ui file vcl

2) Mechanism
a) in sw part
- add the new choice in SwPrintUIOptions
- take it into account in CalculatePagesForPrinting
- in GetRenderDoc, in case of current page, the current mechanism which uses a temporary doc
for the preview doesn't work so we need to use the whole doc instead of creating a temporary doc

b) in vcl part
- add mnInitialPage to keep in memory the current page when opening the dialog.
I found no other way to have this information once the range has been changed
- initialize mnInitialPage in ctr
- modify PrintDialog::preparePreview to have the right range
- take into account the new choice in UIOption_RadioHdl
(this last one is for the preview, the rendering is ok even without it)

+ add some check on test_printDialog QA test to see if range is ok
when going back to Portrait.

Change-Id: Idff5622601d94c73e53e12af215d5c8ba3e1b04a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210643
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-28 09:22:10 +02:00
Mike Kaganski f0600a8d88 tdf#163272 sw: give a paragraph its own /Lang
Write a paragraph in a language other than the document's, then File -
Export As - Export as PDF with Tagged PDF on. The paragraph's element
said nothing about the language, and the Span holding its text said it
instead:

 /StructElem /S/Standard /K[6 0 R]
 /StructElem /S/Span /Lang (en-GB) /K[1 2 3 4 5 6 7 8]

A run of text was compared against the language of the document, so
every run of a paragraph that declares one of its own differed from it
and opened a Span. The comparison is against the paragraph now, and a
paragraph unlike the document names its language itself. A run unlike
its paragraph still opens a Span and names its own, which it did not
where it was the document's language the paragraph had departed from.
A Span that carries anything else - a strikeout, a script, a character
style - still stands, without the language it was repeating, and so
does a Link. A paragraph with something anchored in it says nothing,
as before: what hangs there is tagged underneath it and would take the
paragraph's language for its own.

testSpans reads four list items, three of them en-GB in a de-DE
document. It asserted the shape the old rule made - for one of them it
looked for a single Span and took the language off that, and for the
rest it counted the Spans that rule opened. It reads the language off
the paragraph now, asserts that the item at the document's own
language names none, and where an item holds a hyperlink and a
footnote it finds the two Links alone.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I4082891666598793f59d1bf62c33e883ebdebb8f
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13117
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 0d2d9e656d87647f904f1a463ed9b879c2bfb10c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211375
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-23 19:56:06 +02:00
László Németh e668dc84eb tdf#173389 cui offapi sw xmloff: add custom compound-based hyphenation
Add new paragraph justification option "Split compound words" for
custom compound-based "smart" hyphenation. Add compound-based "smart"
hyphenation support for Danish, Dutch, Esperanto, Estonian, German,
Norwegian, Swedish (and potentially, Icelandic, Finnish and
Latvian) languages by fixing Hunspell morphological analysis and the
associated lingucomponent code. (Previously compound-based "smart"
hyphenation was enabled only for Hungarian.)

With the new option it's possible to keep MSO/MS-DOCX interoperability,
also introducing a better hyphenation algorithm for several languages.

Details:

    * Add check box to Alignment in paragraph formatting dialog window;

    * Store properties in paragraph model:

      css::style::ParagraphProperties::ParaIsCompoundBased

    * Implement it by checking the new option in the previously
      added commit f9f694f5d9f39c5801bc5fec45867252c293bbcb;

    * Add ODF import/export (loext:compound-based);

    * Add ODF unit tests by the new tdf173389_smart_hyphenation_nl.odt
      and tdf173389_smart_hyphenation_hu.odt. Now use the previous
      tdf119908_smart_hyphenation_hu for disabled compound-based "smart"
      hyphenation, also the new tdf119908_smart_hyphenation_nl.odt.
      Note: the Dutch test document results better compound-based
      hyphenation in two positions.

    * Add Hunspell patch to fix Danish, Dutch, Esperanto, Estonian,
      German, Norwegian, Swedish (and future Icelandic, Latvian,
      Finnish) morphological analysis for compound word constituents;

    * hyphenimp.cxx hyphenate(): fix tokenization for consecutive
      pa: elements, like resulted in the fixed Hunspell dictionaries.

Follow-up to commit f9f694f5d9
"tdf#173389 sw: add compound-based “smart” hyphenation for readability".

Change-Id: I4414bd588646ecf6dc86b77642833ac9c7820a98
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211341
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
2026-09-23 14:38:07 +02:00
Justin Luth 63a7cd7b5e tdf#79738 doc import: always disable LineNumbering for H/F
Always disable line numbering for headers/footers
when importing MS formats.

Copying what was implemented for DOCX in tdf#79738 and tdf#167193

This ultimately just turns off a LO built-in style's default value.

rDoc.FindTextFormatCollByName currently just ends up doing a
UIName.toString as it looks for matching styles,
so the conversion of ProgName to UIName wasn't strictly necessary
at this time, but better to do it right immediately.

make CppunitTest_sw_ww8export4 \
    CPPUNIT_TEST_NAME=testTdf79738_footerLineNumbering

Change-Id: Ied7a64bcd43f9a4f0abc5103a0c17e93f651019e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211300
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
2026-09-22 03:02:32 +02:00
Samuel Mehrbrodt 5b36e890ec tdf#173649 sw: don't wrap docx text into a narrow gap beside a shape
Writer laid text into a 0.2 cm gap left of a text box, where Word
leaves the gap empty. Word gives up a gap under a quarter inch wide,
measured from the column edge to the object's wrap boundary, when the
other side has at least that much room. Follow the same rule for
documents the Word filters read.

Change-Id: Ifdacbf0469296ade1665fb0b56526301cd19f973
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211280
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@collabora.com>
Tested-by: Jenkins
2026-09-21 20:38:58 +02:00
Mike Kaganski 32dec34df6 tdf#171022 sw,vcl: name the element a link points at
Exporting a document to PDF/UA-2 produced a file that fails
ISO 14289-2 clause 8.8, once per outline item and internal link.
veraPDF reports

 Destination in Outline item, OpenAction or Link annotation is not
 a structure destination

The destination named the page and an area on it, and that is all:
what was linked to could only be worked out by looking at what the
layout had put at that position.

A destination for a link or an outline item is now written as a GoTo
action carrying a structure destination beside the page one
(ISO 32000-2 12.3.2.3):

 /A<</Type/Action/S/GoTo/D[<page> 0 R/XYZ ...]/SD[<elem> 0 R/XYZ ...]>>

sw creates a destination before its target is tagged, so the node is
remembered while the cursor is on it, and matched against the tags in
the pass that already runs after the last page. Creating one and
remembering its node is a single call now, which every destination a
link or an outline item points at goes through: bibliography entries
and links in the text of a shape are named as well.

The cursor is not always on the target: a jump that selects a frame
or a drawing object, and one that finds nothing, move it nowhere, and
where it was left standing on the link, that link's own element must
not become the target. The pass over a shape's links can instead
start with the cursor on the target already, where a jump that did
reach it shows no move either, so there the mark names its own node.
Those keep writing /Dest, as do a target that was never tagged and
one whose element was never emitted.

The element carries its role and its content, not a name of its own:
a heading becomes /S/H1 with no /Alt or /T. veraPDF does not check
what a structure destination points at, so the test does.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: Ic76d80d46f130d549ebaacf175393a3d6ec77998
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/12300
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit a6502c6e96d13425bcb4a3bf5731a998982d5957)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211150
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-18 19:07:01 +02:00
Mike Kaganski 6e785d7b0b tdf#163240 sw: subdivide a Link by Spans
The commit "tdf#163240 vcl,sw: keep one Link tag for a wrapped link"
made language, baseline shift and decoration come from the link's first
portion for the whole link, and noted subdividing by Spans as the fix:
those three are attributes of the Link tag, and there is now one tag per
hyperlink, so a change inside it had nowhere to go.

Open a Span in the Link instead. A span waits inside its link, so two
tags can be open at once, and an annotation goes to the link's own tag -
vcl takes it on a Link only, and a styled run crossing a line break
would otherwise leave that line's annotation without a StructParent.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I302d32f66fcb4e3b1eaf63b136bdcf96aaea17b7
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/11543
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 8f52d63f897aaf710dfe4cd9771f39689471abfd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211101
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-18 14:21:04 +02:00
Mike Kaganski 6e70cb2e00 tdf#163240 sw: track which tags to close, not how many
The commit "tdf#163240 vcl,sw: keep one Link tag for a wrapped link"
kept the tag across a line break. A ruby still split it, and a character
style on a ruby base pulled the following text into the Ruby element.

Tags were closed by a count, which callers decremented to leave one open
for the next portion; a count does not record which tag. Keep two stacks
instead: the tags this helper opened, and the tags left open for a
following portion. Close a deferred tag only while it is the current
element, so neither a ruby nor a fly closes a tag of another.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: Icdf793f149076db2b5dfac2b7668d0c414467427
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/11542
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 1936ac2268b9e603c64a03eff6eb8b7ecb8b56de)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211090
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-18 11:29:55 +02:00
Mike Kaganski 79b06ca748 tdf#163240 vcl,sw: keep one Link tag for a wrapped link
Regression after commit a71da3b7a8
(tdf#156565 sw: PDF/UA export: split Link SE at line break,
2023-11-01), which closed the tag at each line break so that every
annotation had a tag to nest in.

A structure element could reference one annotation only, the
LinkAnnotation attribute being a value in a std::map; give it a vector
and emit an OBJR kid and a parent tree entry per annotation, so each
StructParent resolves to that tag. A page or column break still ends
the tag.

Language, baseline shift and decoration now come from the link's first
portion, at a line break as much as within a line - splitting the tag
at a break would only make the result depend on where the line ends.
LATER: subdivide the Link by Spans, which covers both.

testTdf157816Link and testTdf142806 expected a tag per annotation.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I493439a33b2cbc0eecf1af6b300859cd78ee87ba
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/11541
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit ade287e6a4edf7476e667f48082261deeddd96d5)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211077
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-18 08:45:00 +02:00
Mike Kaganski 1eca0c353a Simplify SwFillCursorPos ctor using default initializers
Simplifies code, no functional changes.

Change-Id: I433a3aa697d8bf3056d51894137f783821915970
Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/12051
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit ce897ee2f106bf890b8e3d431e0e34f48c9d9c65)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211046
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-16 20:20:53 +02:00
Mike Kaganski 121c5f332f Drop SwSpecialPos ctor, and use default initializers instead
Simplifies the code a bit, no functional changes.

Change-Id: I72f71db5e12945d904b8922987bf7d5a4d231481
Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/12050
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit 72bfe9ed3e36faf927a31e235fef3fb91ae52851)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211045
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-16 20:20:45 +02:00
Caolán McNamara c3ec833e11 move the data binding namespace registration to a shared header
the docx export needs to register the same prefixes before it can
evaluate an xpath from the data binding

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I237deada64564a91b312c5b4670851d4ba57cd03
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9940
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit b482d8a3f019ae725f8242cbd7f1e258ab2b6cbd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210441
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-14 12:56:21 +02:00
DrRobotto 3a45b5774f tdf#43959 - Update rulers immediately after zooming
Change-Id: Ic67ac17e3ed58c5829665befc9799ab4846e1ad9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210678
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
Tested-by: Jenkins
2026-09-13 15:55:30 +02:00
Andrea Gelmini 4ee0d493d0 Fix typos in code + comments
Change-Id: I66a422f3519dceed4f5e253a2895eb2e0d943662
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210574
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-09-11 02:53:38 +02:00
Xisco Fauli 32664765cf sw: drop obsolete check. Minimum GCC version is 13
Since
commit 16dd61ab4d
Author: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Date:   Sat Mar 21 08:40:09 2026 +0200

    Bump minimum GCC version to 13

Change-Id: I27c55512018b3c02e7d67467019088457e3b8c06
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210559
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-09 12:53:41 +02:00
Mike Kaganski 32ab4a61cc Simplify SwPosition comparison operators
Drop inequality, that is automatically deduced; and use less-than
to define others.

Change-Id: Ib979cbe74ec28c1fde0337276d4f602a1fe907b4
Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10674
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit 9f8156beb5eb02ef7d7b00a3effbd6631fc58dfb)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210507
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-05 12:45:59 +02:00
Noel Grandin 1b276f9265 merge the outliner ParagraphData information into the regular EditTextObject
as part of the process of merging the Outliner code into the normal EditEngine paths.

So instead of keeping a bunch of information "on the side" and then having to merge information
from multiple sources, it all lives where it logically belongs.

Also take the chance to rename the depth/getdepth/setdepth
fields and methods to NumberingDepth, which makes the purpose
more obvious.

Change-Id: I314673ee1b9efa14f178ac34a122995a554cd788
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10551
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 284bbe0af12b96844976f30bb35ade3a327ea76d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210503
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-05 00:09:20 +02:00
Mike Kaganski 2141c9e689 Simplify some SwNodeIndex methods
Delegate where possible, and drop operator !=.

Change-Id: I64efc13539dc78c4858775c10d3287dc416467fe
Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10733
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit c4a06b011473941dfa0b258f3ba655e7f1a9cc3e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210489
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-04 16:31:34 +02:00
Heiko Tietze e7d7f1094c Relates tdf#167632 - Make column label plural aware
Change-Id: I74a13b8e0559e63a127f08b119f6aba06efc5cab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210457
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Tested-by: Jenkins
2026-09-04 07:36:40 +02:00
Lodev 164ef01248 tdf#167632 Add additional columns when converting text2table
Add an "Add [n] Columns" spin button to the Convert Text to Table
dialog, letting users choose how many empty columns (0-20) to append
when converting text to a table.

Instead of inserting separator characters into the source text (which
left those characters behind in the document when the conversion was
reverted), pass the requested column count down to SwNodes::TextToTable
and raise nMaxBoxes accordingly. lcl_BalanceTable() then creates the
extra empty boxes via InsBoxen() without touching the text, and
registers them with the undo object, so reverting the conversion
restores exactly the originally selected text.

Change-Id: I0bd01c31854cb5b4de0e63f0e3f0fbe88baf5c44
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188311
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-09-03 11:15:18 +02:00
ApurvR20 4a5e024882 tdf#157665 Implement three-way operator in contentindex.hxx
Change-Id: Id7a4ca3ff7d5d3bcd1e54758a80f7eb5385e3f50
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210321
Reviewed-by: Hossein <hossein@libreoffice.org>
Tested-by: Jenkins
2026-09-02 09:26:47 +02:00
Aron Budea f86a6409c7 cool#16086 sw: Avoid selecting header bg image in body
Selecting such images too easily can make working with those
documents inconvenient.

Change-Id: I64660b2ee0f4bb36001db355c101825b2d4903c0
Signed-off-by: Aron Budea <aron.budea@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8924
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 5c9da7357da562bfde79061118c0bc67ed251c50)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210361
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-01 22:10:11 +02:00
Caolán McNamara dec0217dd3 sw: fold the filter copies of allowAccessLink into SwDoc::AllowAccessLink
the html and markdown filters each had their own copy of the same referer
lookup that SwDoc::GetLinkReferer already does

the html object import now makes the same check the graphic import makes
on the url it reads from

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I25f4c978a2c3c3680c7eca80970534a72fde1369
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10226
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit ef4a0f39342e6dfb1e2c8f2b13e7b40954e843f8)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210290
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-31 15:56:36 +02:00
Andrea Gelmini a3c366c6ac Fix typos
Change-Id: Ic5f2a5d2639118b5986ef8781581b512e0e27cca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210195
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-08-29 16:31:49 +02:00
Andrea Gelmini 3568078c9b Fix typos
Change-Id: I5cecfe23d9eb95bd023c6580f0485301c3b25244
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210194
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-29 15:40:00 +02:00
Andrea Gelmini 83d895ce5b Fix typos
Change-Id: I73f69dad410efcfcdd8d018a904a02ecaab36a6c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210058
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-08-27 15:28:14 +02:00
Justin Luth 3b5cb9297c tdf#135538 sw regex: add custom support for finding '^' and '\A'
Being able to search for the end ($)
or the beginning(^)(\A)
of a paragraph is a common regex search criteria.

This patch adds the support needed to find the beginning.
It works for both forward and backward searches.

The problem is that the search code
generally assumes a non-zero-length match,
but of course the beginning position is exactly that.
So things get tricky trying not to skip anything
and yet still avoiding infinite loops.

So why doesn't it work in the first place?
-for Find Next: we do NOT want to do a bFirst search
 because we are probably already there (both Point and Mark).
 Otherwise it never gets past the first match.
 For regular text, the Point is past the start of the match
 (the Mark) so it doesn't find it twice.
-For Find All: on last node, can't forceMove, so infinite loop.
  -bToNextPara force move handles the previous cases
  -alternatively could be handled by tracking with a bForceMove

Wrap-around already works (want bFirst = true to test CurrPos).
Find-in-selection already works (want bFirst = true).
Find-All already works (want bFirst = true).
  -all these MustStartWithCurrentNode

I was tempted to do something similar for FindAttr (tdf#129449).

make CppunitTest_sw_uiwriter7 \
    CPPUNIT_TEST_NAME=testTdf147583_backwardSearch

Change-Id: I192b48d556e84f4f04c844ff65be03dc6c0c6707
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209094
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-08-25 23:47:18 +02:00
Caolán McNamara ecd9ee7aa1 pass a referer through setSvxBrushItemAsFillAttributesToTargetSet
SvxBrushItem::GetGraphic wants the name of the document the brush came
from, so take it as an argument and hand in SwDoc::GetLinkReferer
wherever a document is at hand, the Writer style, frame and background
shell paths included.

The dialog and example-window callers pass the name of the active
document shell through a new svx helper getActiveDocumentLinkReferer.

The hand-rolled copies of the GetPersist, HasName, GetMedium GetName
sequence elsewhere in sw now call SwDoc::GetLinkReferer too.

Change-Id: I8693d27869baed79962b2d5bdcb7b7e2c63227bb
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8200
Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 18f91ac71710027479dfe9f206ae2207bad8f2b7)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209827
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-25 11:16:39 +02:00
Andrea Gelmini 5bdfd456e1 Fix typos
Change-Id: I1105834db55dbc5fe3d0af49e4c93ab2daa467c3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209486
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-08-23 11:21:27 +02:00
Justin Luth 818a469f17 tdf#60632: sw: fix my messup of swundo.hxx's documentation
See 83 and 87 for previous coding to handle a hole.

Change-Id: I45535a8a9c2e8a30bb3c11b7eef9bdfd1517165f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209528
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
2026-08-23 01:26:23 +02:00
Justin Luth 5e6e2892ef tdf#60632: sw: Allow SID_REPEAT even if numRule created
Repeat last change (Ctrl-Shift-Y) does work for numbering, but NOT
for repeating the first time, when the NumRule is first created.
That action was considered not repeatable, and thus it blocked
the entire request.

Well, nicely enough an attempt to repeat NUMRULE_CREATE
already does nothing at all, so don't invalidate CanRepeat.

I just reused the first existing unit test that I found with
nice-looking paragraphs that I could turn into numbering.

make CppunitTest_sw_uiwriter CPPUNIT_TEST_NAME=testFdo70807

Change-Id: If85fbe68dec934b0d76e8d4c70b925cf6ace78a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119201
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-08-21 17:52:49 +02:00
Xisco Fauli 0c91381485 loplugin:unusedmethods
Change-Id: I17586b49f970be17c5f6d2823d4a973521b2ed62
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209407
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-21 09:31:35 +02:00
Paolo Benvenuto d3b0de73da tdf#71261: Allow spaces in writer table names
Drop the space character from the places that rejected it in
table names:

- Insert Table dialog: text filter on the name entry
- Table Properties dialog: validation in DeactivatePage that
  showed an info dialog
- Navigator rename: forbidden characters list
- UNO SwXTextTable::setName: check that threw RuntimeException

Other illegal characters (".<>") are still blocked, since they
are incorrectly handled in formulas and chart data sources.

Also remove the now unused STR_WRONG_TABLENAME string.

Allowing spaces exposed that a chart linked to such a table lost
its data connection after save/reload, so fix the table name
(de)serialization on both sides of the link:

- ODF export (xmltexte.cxx) wrote draw:notify-on-update-of-ranges
  wrapped in single quotes when the name contained a space; write
  it unmodified instead (the attribute also allows a plain string,
  not only a cellRangeAddressList).
- ODF import (xmltexti.cxx) only unquotes the legacy single-quoted
  form when the value actually starts with a quote, so both old and
  new documents are read correctly.
- SwChartDataProvider::convertRangeFromXML split the space separated
  range list with a naive tokenizer that broke inside a single-quoted
  table name; split it in a quote-aware way so the chart range still
  resolves to the table (instead of falling back to the chart's
  internal local-table).

Added regression tests:
- verify that the Insert Table dialog accepts spaces in the
  table name
- verify that a table name with a space can be set via UNO
  and is preserved
- verify that the Table Properties dialog accepts and saves
  a table name containing a space
- verify that, after save/reload, the chart's
  notify-on-update-of-ranges keeps the unquoted table name
- verify the convertRangeToXML/convertRangeFromXML round-trip for
  a table name containing a space

Fix found with the help of Claude Opus.

Change-Id: I92bbed3bfed5c90af4242c396608dd3802cd126a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204381
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-08-20 10:04:58 +02:00
Neil Roberts 5b684e2133 tdf#173192: Make separate strings for the Create from X label
The insert table of contents dialog box has a label used as a section
header which contains “Create %s from” where %s is replaced by the
currently selected ToC or index type. Previously this was generated by
replacing the %s part with the text from the drop down box to select the
type. This is difficult to translate for a lot of languages. Instead,
this patch adds a different string for each possible type.

Change-Id: I6a906be6ae88373e8f79b32d7bff87b77680f280
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209363
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2026-08-20 07:44:50 +02:00
Khaled Hosny 7eef6029ec tdf#171624: Make font variation settings per script
We had only one shared setting for the three script groups, which means
the same variation settings are applied to the three groups, which makes
no sense as they often use entirely different fonts.

Change-Id: I6f2a8b4d1c9e0357a6b2d8f4e1c7093b5a2d6e84
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209222
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-08-18 00:28:11 +02:00
Marios 2ad2d0e524 tdf#153770 Clarified the Create From section in ToC/Index dialog and reordered
As per the proposal, modified the, Create From, section title to include
the type of ToX to be made. Moreover, changed the wording to be more
accurate and cleaned up the relevant sections of the UI file that were
touched.

Change-Id: I15f7f2e7e4ec2406488824189f8e88797a64e85b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208750
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-08-17 10:30:17 +02:00
ApurvR20 7566e557de tdf#157664 Drop operator !=, where respective operator == is defined
Removed definition and implementation of operator != from pam.hxx
and pam.cxx

Change-Id: If0aee1b3b7f5f8f9aa6ec568c90e2f13a3dd09d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209017
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
2026-08-10 14:55:11 +02:00
Neil Roberts 9dd7345159 tdf#173043 Add translator comments to strings containing “outline”
The word “outline” in LibreOffice can refer to either the lines of the
shape of something or an overview of something. When the string is quite
short it’s difficult for translators to know which meaning is intended.
There seems to be quite a lot of cases where the translators have got
this wrong. In order to help them this patch adds translator comments to
a bunch of the strings to explain which meaning should be used.

Change-Id: I4b75cc829128633bc9382817fc574d55a09af8a4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209037
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-08-09 12:12:44 +02:00
Caolán McNamara b14f8b9dfa stop the fill-bitmap link listening to its host's SvtBroadcaster
It's annoyingly difficult to remove the links from the broadcaster,
drop that approach and do it a more direct and less reentrant way.

Get ~SwFormat and SwContentNode::ImplDestroy to report the death to the
tracker instead.

A flag on SwDoc keeps the common no-links case in those destructors to a
single test.

During ~SwDoc the hosts stay silent: the links administration manager
can already be unreachable through the half-destroyed document, and
~FillBitmapLinkTracker releases whatever is left without touching the
dead hosts.

SwContentNode::ImplDestroy skips disconnected nodes, the stack-built
working copies like SwTextNode::Update's SwContentNodeTmp that have no
nodes-array and no SwDoc. A node deleted for real still reaches its
SwDoc, since SwNodes::RemoveNode deletes nodes while they are still in
the array.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: Ibbf15e4e17a7a08aa029c9d5df8f40b7a4a13e04
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4282
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 38ac5c0e6c7baf4de27498e5428d6279c753c97e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208603
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-25 15:26:55 +02:00
Caolán McNamara 928a715ddf register writer XATTR_FILLBITMAP URLs as SvBaseLinks via SwFormat...
...and SwContentNode

rather than digging around via pool ItemSurrogates for these writer
elements

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I4222cc9aeda1335252f48c4242edfc5fc71a60f0
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3471
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit d8a09afac6108d7ba23b253ed83b564af8a31c55)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208082
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-25 01:47:59 +02:00