520958 Commits
Author SHA1 Message Date
Justin Luth 434f3ee8a5 tdf#162752 GetScalingOfSelectedText: avoid endless loop
What seems to be a long-standing calamity was apparently exposed
by my 7.5 commit 0031f34d0b.

Without this fix, nIdx was never changing,
so the while loop ran infinitely - ever since initial creation.

Since synchronized SwTextNode::GetMinMaxSize (mentioned in the comment)
doesn't loop, it doesn't seem to need any changes.

Change-Id: I503839d93f212d354dd66e8a5dfdf3f4730f068f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211691
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-10-02 01:41:03 +02:00
Caolán McNamara 04871f8ccf crashtesting: measure HTML form controls without a hidden view
crash on import of bugtrackers/html/novell574949-2.html,
novell574949-3.html and novell688091-3.html, a debug build asserts:

 soffice.bin: include/o3tl/typed_flags_set.hxx:168: constexpr typename o3tl::typed_flags<T>::Wrap operator&(E, E) [with E = SwFrameType; typename o3tl::typed_flags<T>::Wrap = o3tl::is_typed_flags<SwFrameType, 64511>::Wrap]: Assertion `o3tl::detail::isNonNegative( o3tl::to_underlying(lhs))' failed.

and valgrind of novell688091-3.html reports:

 Invalid read of size 4
    at SwFrame::GetType() const (frame.hxx:533)
    by SwFrame::IsContentFrame() const (frame.hxx:1283)
    by SwContentFrame::ImplGetNextContentFrame(bool) const (findfrm.cxx:523)
    by SwContentFrame::GetPrevContentFrame() const (cntfrm.hxx:138)
    by SwFrame::FindPrevCnt_() (findfrm.cxx:1250)
    by SwFrame::FindPrevCnt() const (findfrm.cxx:267)
    by SwTextFrame::IsHiddenNowImpl() const (txtfrm.cxx:1635)
    by SwTextFrame::Prepare(PrepareHint, void const*, bool) (txtfrm.cxx:3047)
    by SwFlyInContentFrame::NotifyBackground(SwPageFrame*, SwRect const&, PrepareHint) (flyincnt.cxx:230)
    by SwFlyInContentFrame::DestroyImpl() (flyincnt.cxx:51)
    by SwLayoutFrame::DestroyImpl() (ssfrm.cxx:509)
    by SwSectionFrame::DestroyImpl() (sectfrm.cxx:192)
    by SwLayoutFrame::DestroyImpl() (ssfrm.cxx:572)
    by SwCellFrame::DestroyImpl() (tabfrm.cxx:6021)
    by SwLayoutFrame::DestroyImpl() (ssfrm.cxx:572)
    by SwRowFrame::DestroyImpl() (tabfrm.cxx:4853)
    by SwTabFrame::DestroyImpl() (tabfrm.cxx:154)
    by SwTableNode::DelFrames(SwRootFrame const*) (ndtbl.cxx:2530)
    by (anonymous namespace)::TableSaveStruct::MakeTable(unsigned short, SwPosition&, SwDoc*) (htmltab.cxx:4754)
    by SwHTMLParser::BuildTable(SvxAdjust, bool, bool, bool) (htmltab.cxx:5167)
  Address 0x2d286d30 is 272 bytes inside a block of size 472 free'd
    at operator delete(void*, unsigned long) (vg_replace_malloc.c:1146)
    by SwSectionFrame::~SwSectionFrame() (sectfrm.cxx:197)
    by SwFrame::DestroyFrame(SwFrame*) (ssfrm.cxx:392)
    by SwLayoutFrame::DestroyImpl() (ssfrm.cxx:572)
    by SwCellFrame::DestroyImpl() (tabfrm.cxx:6021)
    by SwLayoutFrame::DestroyImpl() (ssfrm.cxx:572)
    by SwRowFrame::DestroyImpl() (tabfrm.cxx:4853)
    by SwTabFrame::DestroyImpl() (tabfrm.cxx:154)
    by SwTableNode::DelFrames(SwRootFrame const*) (ndtbl.cxx:2530)
    by (anonymous namespace)::TableSaveStruct::MakeTable(unsigned short, SwPosition&, SwDoc*) (htmltab.cxx:4754)
    by SwHTMLParser::BuildTable(SvxAdjust, bool, bool, bool) (htmltab.cxx:5167)

SetControlSize creates a hidden temporary view to measure a form
control, so a layout exists while the document is still being parsed,
which is an unusual thing to attempt, so it seems easiest to just avoid
that entirely.

The temporary view is originally, since:

commit ff09ed094d
Date:   Mon Jul 7 11:06:22 2008 +0000

    INTEGRATION: CWS ab53 (1.26.112); FILE MERGED 2008/06/20 06:47:28 tkr 1.26.112.1: #i47763# synchronous html import

But svx already had a way to get a control for a plain window with no
view with:

commit e1137040e3
Date:   Tue Nov 14 12:48:07 2006 +0000

    INTEGRATION: CWS aw024 (1.18.138); FILE MERGED ... 2006/03/21 13:20:59 fs 1.18.138.7: #i62854# +GetTemporaryControlForWindow ...

The recent problem only shows up in crashtesting since hidden text
support was added to html filter in:

commit eb9ca728e179aab3f51be4d96b02a03e502a1f87
Date:   Fri Sep 18 08:36:02 2026 +0200

    Related: cool#16219 engine sw HTML import: handle hidden text
    Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/12991

so drop the temporary view and realize the control with
GetTemporaryControlForWindow in a hidden window of the parser's own
when there is no view. valgrind is clean on all of these documents,
and the 104 controls in them and in the sw HTML test documents keep
the same sizes.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I47c26c7efba47f747cd1ec29b21350172b1df0c2
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13960
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit c7e0ef4a46fb127962a69b2124de46bc46486685)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211685
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 22:44:24 +02:00
Xisco Fauli ed58a00d89 libpng: upgrade to 1.6.59
Downloaded from
https://sourceforge.net/projects/libpng/files/libpng16/1.6.59/libpng-1.6.59.tar.xz/download

Change-Id: Ice6941e10ba25064fbd9744f6a914f62b117e425
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211687
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 22:42:02 +02:00
Caolán McNamara e269db95ff sfx2: start ImportFrom from the same link update state as Load
as ConvertFrom and SwDocShell::Load already do for an initial load, so
links are left alone until UpdateLinks decides what to do with them

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: Ifbc334736988a8a747f83ef4830cf95cb485a148
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13866
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 8d57e690c64fa6e4385e396d115cc5124ffbf34d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211668
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 22:41:40 +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
Attila Szűcs d615c8f532 sw: DOCX import: fix z-order of a shape over a shape with a text box
A shape that goes over a shape with a text box was put one place too high
and ended up over the shapes that should have covered it.

Regression from commit da7414e63578c17adb7f5f3345fa2143f0bc769c (sw: fix
setting mbIsTextBox on shapes' text boxes).

GraphicZOrderHelper::findZOrder() works out where a shape goes by reading
the z-order of the shape it is to sit on and adding to it.
200cd2b99b (tdf#138995 DOCX import: fix handling of textbox zorders)
made it add one more place when that shape has a text box, since a shape and
its text box are two objects and going over the pair means passing both.

The z-order it reads back, though, is the one SwXShape reports, and that
is SwTextBoxHelper::getOrdNum(), which leaves the text frames out.
Until de070c8e59 nothing set the flag it asks for: SetTextBox(true) was
called on the shape's SdrObject, which is not a SwFlyDrawObj, so
IsTextBox() stayed false, the text frames were counted like any other
object, and the extra place was right. Now that the flag reaches the text
frame, a shape and its text box take a single place in that numbering, so
the extra place is one too many.

200cd2b99b noted that it was needed until there is a setter
version of SwTextBoxHelper::getOrdNum(); that setter still does not
exist, but the numbers the filter reads back no longer count the text
frames, so there is nothing left for the extra place to skip.

Signed-off-by: Attila Szűcs <attila.szucs@collabora.com>
Change-Id: Id8d6746c3832e5e512cb0a970d07440f1afb67bc
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13659
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
(cherry picked from commit eb4fe084855f60a41de4493aa289160ba074e14c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211667
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 21:36:52 +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
Xisco Fauli e1288295dd harfbuzz: upgrade to 14.5.1
Downloaded from https://github.com/harfbuzz/harfbuzz/releases/download/14.5.1/harfbuzz-14.5.1.tar.xz

Change-Id: I3e3c5cb6eed0cbee69edb34ced5dbf40c248b30e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211665
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 21:36:16 +02:00
Neil Roberts 0e64bd4f89 tdf#173585 sw: Add a unit test for when findAll finds no results
The test replicates the instructions in the bug report. Jenkins is
building with optimisations for MacOS so the test should be able to
catch the original problem if it were to regress.

Change-Id: Ia8fd381be15ef3986fdb1f515be45097abf614ff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211377
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-10-01 18:46:08 +02:00
Caolán McNamara 90ff32cc3f ofz#566755881 Out-of-memory
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I07ae0a230816dad69b12474601e600105b97fab6
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13882
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 851a5f7919c538a895ba850f49f5f5210988508e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211666
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 16:19:16 +02:00
Mike Kaganski eec52071ef tdf#157028 vcl: use object streams in an encrypted file too
Object streams and a cross-reference stream shrink a tagged PDF, but
I1e27dc3a8f43aa8b6c75ae930615c8d4b4645627 ("tdf#157028 vcl: write the
structure tree into object streams") left an encrypted export out of
both, so a password kept the whole structure tree uncompressed. The
spreadsheet reported in tdf#166233, attachment 171182, exported tagged
at 2368642 bytes, and at 13465120 with a password. The protected export
is 2389620 bytes now, and what it has over the plain tagged one is what
encryption itself costs.

This writer encrypts a string as it builds the object. ISO 32000-2 7.5.7
forbids encrypting a string in an object stream separately: the stream
that carries it is encrypted instead. So the strings of a stream-bound
object go in plain now, and the object stream is encrypted as a whole,
with the cipher set up for the stream's own object number rather than
for the objects inside. The stream's /Length counts what the cipher
adds. Only the structure elements and the ID tree put strings in a
stream, so only those two builders ask getStringEncryptor for one, and
it returns nothing while the file uses object streams.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: Ia6a063244baf456d7c7368a6bba7a8cbb96e31b0
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13370
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 59193295323917bd065ea3a235f7653ad7f9b04b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211655
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 15:43:44 +02:00
Xisco Fauli c80b6acef5 python3: upgrade to 3.13.16
Downloaded from https://www.python.org/ftp/python/3.13.16/Python-3.13.16.tar.xz

Change-Id: Ic86fd03f87d26a96f7eb4e350b3766ce0992cdbb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211649
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 15:43:29 +02:00
Caolán McNamara b94e7a82c7 don't preload a password protected library of a document
Preloading it when the library container is created recursed. It gets
loaded along with the document's Basic project instead.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I14b24d93dacdbf856bc9ef5d3e6fa1a885666100
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13616
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit ef186208097f9525e3e376fb8e677c643498f02f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211598
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 14:36:21 +02:00
Christian Lohmaier 401d9a5d4a fix openldap with Xcode 16: declaration directly after case not accepted
if wrapping the case insto a block, Xcode 16 is happy.
Solves building on macOS 14 that is stuck with Xcode 16 (at least
when not trying to sideload anything newer)

Without the block it fails with "error: expected expression" on the
variable declaration lines.

Change-Id: I0888fc5d2d6088f6071a72cde0c26532779cedad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211633
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2026-10-01 14:34:13 +02:00
Xisco Fauli 693d5f6c6b CppunitTest_editeng_core: use CPPUNIT_TEST_FIXTURE
Change-Id: Ic998ad967c60ce1846689a234f7304f5aef3136c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211661
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 14:23:03 +02:00
Noel Grandin b00fc0d4e7 add some editeng/sd unit tests
which will be useful in upcoming changes to EditEngine/Outliner

Change-Id: I762a5b213f3ee9a65a83ac8b17d377f9d91a2a2a
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13817
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit a6899cb5b04532f2efa24619b93ba0e9fef6c344)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211654
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 13:53:06 +02:00
Olivier Hallot 74b1296771 Update git submodules
* Update helpcontent2 from branch 'master'
  to e80198e1d1d98518188321158da8488f32675bea
  - tdf#172958 Split alignment between dialog and sidebar
    
    Change-Id: If973e320cb2986137cfc08df6463c46dfae0e761
    Reviewed-on: https://gerrit.libreoffice.org/c/help/+/211631
    Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
    Tested-by: Jenkins
2026-10-01 13:41:29 +02:00
Olivier Hallot 5a343d265f Update git submodules
* Update helpcontent2 from branch 'master'
  to 5c387d491750bbc4e5c3ddef61eb94002959a0c2
  - tdf#173756 Link to converting text to numbers
    
    + Refactor
    
    Change-Id: Ib797d40bf8573c5612d6317e608a4737894da711
    Reviewed-on: https://gerrit.libreoffice.org/c/help/+/211539
    Tested-by: Jenkins
    Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
2026-10-01 13:41:07 +02:00
Noel Grandin 73c41f63cd Rename again in EditTextObject
I messed up in
  commit e174028ce0335d702ecdad5eac823845a16e2f6d
  Author: Noel Grandin <noelgrandin@collabora.com>
  Date:   Mon Sep 21 18:13:44 2026 +0200
  Rename paragraph related types in EditTextObject.

This is not the primary paragraph data structure for
EditEngine.
Add some commentary to reduce the chance of anyone
else making this mistake.

Rename typedef
  EditEngineParagraphs -> EditTextObjectParagraphs

Rename class
  EditEngineParagraph -> EditTextObjectParagraph

Change-Id: I810571cb61b944dd9d056145fe4cef14ba3e43bb
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13273
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit e8dde7d988a1768b68380ab95ba8fabb5feefc2e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211653
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 12:33:02 +02:00
Caolán McNamara b1cbe94512 don't create the BasicManager to warn about Basic on HTML export
Check the library indexes for modules instead, which needs no library
to be loaded.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I49c7de85cc5f473bc69d3077fdf4ba6a77466adf
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13648
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 0bb0a36eb420ff7aafcf0851ff7028b7377407a1)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211627
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 12:26:13 +02:00
Noel Grandin 447298ce46 rename EditEngine::GetDepth to GetNumberingDepth
to distinguish it from the various other depths we have.

Change-Id: I2917ecc55baa90c375150d2066b98c6e5f384626
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13272
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit dc56f1179397f2b6765cdf12a3d09a99fcf7e679)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211652
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 12:11:03 +02:00
Mike Kaganski 24f40c4b11 tdf#163272 sw,drawinglayer,vcl: give anchored content its own /Lang
With Tagged PDF on, a paragraph in a language other than the document's
gets /Lang on its structure element. What is anchored in the paragraph
is tagged inside that same element and inherits the attribute, so a
frame's text and its description would be declared the paragraph's
language.

0d2d9e656d87647f904f1a463ed9b879c2bfb10c (tdf#163272 sw: give a
paragraph its own /Lang, 2026-09-21) avoided that by putting no /Lang on
such a paragraph, on a check of one node of a text frame that can cover
several. Its text still carried the language, on a Span, while what was
anchored in it specified none and inherited the document's. In a German
document that declared a shape's English text German. See
https://gerrit.collaboraoffice.com/c/online/+/13117/comment/89a7866d_907a2957/

The paragraph specifies its own language now, and a frame anchored in it
no longer inherits it. A Figure, a Formula and a frame's Division
specify the document's where the paragraph's differs, which is what the
frame's own paragraphs are measured against. A drawing shape's text is
tagged by drawinglayer, which takes the locale of the drawn portions and
specifies it where they agree; such a shape is nested in its anchor
paragraph in Writer and in no such paragraph elsewhere, so there is
nothing to compare against.

A drawing shape's own element specifies the document's language too. svx
anchors it under the anchor paragraph, drawinglayer opens it there, and
it carries the shape's title and description. Without the attribute, a
described shape in a paragraph that specifies one would have its
description declared the paragraph's language, and its text likewise
where the portions disagree.

testParagraphLanguage compared a structure type against a language and
quoted no text, so nothing identified the words affected. It lists every
element holding text or a description now, against the language it
specifies, an entry reading "P de-DE: Ein deutscher Absatz mit einem
Bild."; one specifying none is listed without a language, so correct
inheritance is asserted too. PDFiumPageObject gained getMarkedContentID
to join a page object's text to its element.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I1eecf0b56f09fc6d144894910a9037d89884dd3b
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13239
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 898a2e1b3a6fc07d7b43315b2f4781b32f1a20d3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211609
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 10:25:19 +02:00
László Németh 78416405b8 tdf#173389 sw: add tests for improved compound-based "smart" hyphenation
Because losing compound boundary information in the new versions of the
Dutch Hunspell dictionary, add German test documents and unit tests for
compound-based "smart" hyphenation, testing also the Hunspell-based
morphological analysis, which was improved for the languages with
fogemorphemes in commit e668dc84eb.

Also remove the unnecessary dependency of the compound-based "smart"
hyphenation, i.e. Hunspell-based morphological analysis of the test
words from the Dutch and Hungarian *non-compound-based* unit tests.
This enables the plain "smart" hyphenation tests for all versions of
the Dutch and Hungarian Hunspell dictionaries.

The German unit test improves the hyphenation in the following three
lines:

* Unter|drückung: Un-terdrückung -> Unter-drückung

* Gleich|berechtigung: Gleichberech-tigung -> Gleichberechti-gung

* Sklaven|handel: Sklavenhan-del -> Sklaven-handel
  (where the word "Sklave" has got an "n" fogemorpheme).

These 3 lines are 10% of the hyphenated lines, while the German
dictionary still lacks of compound boundary data for all the dictionary
words, only compound splitting heuristics of Hunspell is used here, yet.

Note: The Dutch tests became outdated temporarily because
of the recent version of the Dutch dictionary, where the test
compound words moved into the .dic file, but without compound
boundary information.

Unit testing uses system-installed German spelling and hyphenation
dictionaries. E.g. installation of the missing dictionaries:

sudo apt-get install hunspell-de-de-frami
sudo apt-get install hyphen-de

Follow-up to commit commit f9f694f5d9
"tdf#173389 sw: add compound-based “smart” hyphenation for readability"
and commit e668dc84eb "tdf#173389 cui
offapi sw xmloff: add custom compound-based hyphenation".

Change-Id: I1c1fb28d6c0299a284951adc96b77d3205db5f4a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211642
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
2026-10-01 09:30:40 +02:00
Heiko Tietze 8cd7669caf Resolves tdf#173747 - Spelling and Grammar Checker Readability
Using 0xf10d0c ("Dark Red 1") for Spelling brings a contrast of 4.8
and 4.37:1 against white and dark respectively. 0x3465a4 ("Dark Blue 1")
for Grammar results in 5.92 / 3.54.

Change-Id: I8347c2dd68e25aea33f7f2476f6b6d2db370ee7e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211616
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-10-01 09:07:18 +02:00
Caolán McNamara 2bc4c7ea19 save the document Basic and dialog libraries without the BasicManager
Store the library containers directly. Creating the BasicManager first
loads the libraries only to save them again.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I056cf4d8549ab5b9ecf31072704bfcd70e13f7e6
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13645
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 358ad5b06facfa12061d94586f66cfbd01ffe4d3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211525
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 09:02:56 +02:00
Noel Grandin 90f327c670 merge OutlinerEditEng into EditEngine
as part of the process of simplifying the whole Outliner vs EditEngine
infrastructure.

Change-Id: Ia4f173ba41b374864cc4e47d895b037d6493a08f
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13238
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 196eccebee433d3cfe170786a81ea39f5c491ec1)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211615
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-01 09:01:56 +02:00
Noel Grandin 212d17f7ea add a non-const GetEditEngine() method to Outliner
to avoid const-casting all over the place

Change-Id: I75f3442341894dbe4e12cc7995669dc7f3bf63f7
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13354
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 318e2cf839c6311d4a69572b4534f554bdda3f96)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211604
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 09:01:52 +02:00
Noel Grandin ce16bc37fd use more concrete UNO class in the form of ScModelObj
Change-Id: I9ad26f05635583e203ff338a88add65838c9188e
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/555
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 0a6ee7a99d6a5d624c4303256cc385ca6e23d456)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211619
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 09:01:29 +02:00
Vladislav Tarakanov e5856e9912 tdf#173803 Set WM_CLASS with Qt6 on X11
The setApplicationID method is now called for all Qt versions on
X11. For Qt6, xcb_connection_t* is obtained in a new way, by
calling QNativeInterface::QX11Application, instead of the
deprecated X11Helper.

This change is based on these Qt6 docs:
https://doc.qt.io/qt-6/extras-changes-qt6.html#changes-to-qt-x11-extras

Change-Id: I51da53dd7d4cd7e080812cfd0c59d6197cac4a6f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211643
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-01 08:45:20 +02:00
Dan Williams dabd91337a fontconfig: include xlocale.h for locale_t on old macOS
Sonoma (macOS 14) builds with Xcode 15.2 can't find locale_t when
building fontconfig. Later OS versions and Xcode builds don't seem
to have that problem.

In file included from fcarch.c:24:
./fcint.h:682:9: error: unknown type name 'locale_t'
typedef locale_t FcLocale;
        ^

Fontconfig added "#include <xlocale.h>" recently in c24472116 to
fix the issue, but also switched to the Meson build system which
is the only mechanism by which HAVE_XLOCALE_H gets defined. Given
that LibreOffice uses fontconfig's old configure-based system and
it's a bunch of work to switch to meson here, we're not going to
bump fontconfig just for this. For now just assume all Apple
platforms have xlocale.h, which they do.

Change-Id: Ida9ef328dbd79e0c54b3d37355c344d7ca8d1b4c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211630
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
2026-09-30 23:41:32 +02:00
Xisco Fauli 8dcca1011d mariadb-connector-c: upgrade to 3.4.11
Downloaded from https://dlm.mariadb.com/4863518/Connectors/c/connector-c-3.4.11/source/mariadb-connector-c-3.4.11-src.tar.gz

Change-Id: I6f642e4f861946885d7251b7adb8570f2ee17612
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211622
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 23:03:06 +02:00
Olivier Hallot a725ef58ad Update git submodules
* Update helpcontent2 from branch 'master'
  to 5ca01b66114919efccfccb77f006e8744b6d79fe
  - More fixes in Alignment and number formats
    
    Change-Id: I5549b8167e169eecd6de1112f1d2fa6db4e7091f
    Reviewed-on: https://gerrit.libreoffice.org/c/help/+/211629
    Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
    Tested-by: Jenkins
2026-09-30 19:47:28 +02:00
Michael Weghorn 353f378196 svx a11y: Work around linker issue LNK2005 in MSVC build
Add an intermediate OAccessible subclass to avoid this
linker error otherwise seen in my local --with-visual-studio=2022
build on Windows:

    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual class com::sun::star::uno::Any __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::queryInterface(class com::sun::star::uno::Type const &)" (?queryInterface@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAA?AVAny@uno@star@sun@com@@AEBVType@4567@@Z) already defined in GraphCtlAccessibleContext.o
    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual void __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::acquire(void)" (?acquire@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAAXXZ) already defined in GraphCtlAccessibleContext.o
    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual void __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::release(void)" (?release@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAAXXZ) already defined in GraphCtlAccessibleContext.o
    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual class com::sun::star::uno::Sequence<class com::sun::star::uno::Type> __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::getTypes(void)" (?getTypes@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAA?AV?$Sequence@VType@uno@star@sun@com@@@uno@star@sun@com@@XZ) already defined in GraphCtlAccessibleContext.o
       Creating library C:/Users/mwegh/development/git/libreoffice/workdir/LinkTarget/Library/isvx.lib and object C:/Users/mwegh/development/git/libreoffice/workdir/LinkTarget/Library/isvx.exp
    C:\Users\mwegh\development\git\libreoffice\instdir\program\svxlo.dll : fatal error LNK1169: one or more multiply defined symbols found

This is somewhat similar to

    commit f5667d1e3b
    Date:   Thu Jun 26 18:25:31 2025 +0500

        Fix error LNK2005 in MSVC after recent sd changes

Change-Id: I8f01ea095d0a196c61521f92ea9ec76217941aeb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211618
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-30 18:57:57 +02:00
Michael Weghorn 47932ec399 svx a11y: Stop mentioning no more existing AccessibleContext service
That UNO service was dropped in

    commit bcd90334e8
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Wed Sep 2 10:31:59 2026 +0200

        [API CHANGE] a11y: Drop com.sun.star.accessibility.AccessibleContext

, so don't claim to implement it.

Change-Id: I8c569f1db4c05228ba18a2d8e20b96b8712764f3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211617
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-30 18:57:50 +02:00
Olivier Hallot 9f5e792777 Update git submodules
* Update helpcontent2 from branch 'master'
  to fe84c3c561b6b441ee1cfa6ab99af0b4d66a6f4e
  - Refactor cell alignment in Calc
    
    Change-Id: I76159bba4022c8ab75ec047a6de457017768db8e
    Reviewed-on: https://gerrit.libreoffice.org/c/help/+/211624
    Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
    Tested-by: Jenkins
2026-09-30 16:26:36 +02:00
Sergey Anisimov 0a327fc06f AnnotationPopup close fix
There is a bug where, an impress comment does not close when clicking outside of it.
More precisely, the comment does close, but is immediately opened again.
(Qt/gen)specific bug, not reproducible with GTK

The issue is caused by the handling of NotifyEventType::MOUSEBUTTONDOWN: it triggers
FloatingWindow::EndPopupMode(). However, when NotifyEventType::MOUSEBUTTONUP
is received, the call chain eventually reaches FuSelection::MouseButtonUp(),
which accesses an SdrObject from the SdrMarkList (GetMarkedObjectList()).
At that point, the list still contains the popup that is supposed to
be opened, so the comment gets opened again.

Change-Id: Ieb5691812009059d2100976932c34876cca5bc4b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211275
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-30 16:11:27 +02:00
Sergey Anisimov a192fa2378 tdf#173568 - qt context menu fix
focus out reason fix for qt/kf
The bug causing the comment’s context
menu to disappear is caused by a focusOutEvent() being received by the
widget when the context menu is opened. This triggers closePopup(),
which immediately closes the menu.

The fix adds the condition if (e->reason() !=
Qt::FocusReason::PopupFocusReason) so that the popup is not closed when
the focus loss is caused by opening popup.

if (m_rFrame.isPopup() ... ) condition in QtWidget::mousePressEvent
removed, because it can never be reached.

Change-Id: I70a0e9a3051f305f242c3ec7ca08f356d4520ab6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211273
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-30 16:11:20 +02:00
Michael Weghorn 5c53840b57 tdf#173695 svx: Increase min height for ColorWindow icon view to 250
Earlier commit

    commit 6296615b8d
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Sep 29 14:20:18 2026 +0200

        tdf#173695 svx: Ensure minimum height for ColorWindow

had ensured a minimum height of 200 pixels for the ColorIconView
in ColorWindow.

As discussed in tdf#173695, increase the minimum height
to 250 pixels which should be sufficient to show all rows of the
"Standard" color palette even if different styles/themes
(when using an actual toolkit like GTK or QT) may result
in slightly different spacing.

Quoting explanation from tdf#173695 comment 5 of why at least 10 rows
should be shown:

> The "Standard" palette does not merely contain 12 hues arranged in 12
> columns; it also uses 9 rows to provide 9 different shades for each hue.
> (The topmost row contains 12 achromatic colours with different
>  brightness values, making 10 rows in total.)
>
> If this were a user-created palette, this might not matter. However,
> since the palettes provided as official presets have a
> two-dimensional structure, I think that preserving that structure
> requires at least the 12 columns × 10 rows that were available
> previously.

Change-Id: Iafee178ceab6ccbbf6d880fa45cd90e3fd81be9d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211601
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-30 14:59:28 +02:00
László Németh 2caed59ec8 Update git submodules
* Update helpcontent2 from branch 'master'
  to a932a7d6e577a40e47d7da6412ce962c96261e4c
  - tdf#173389 sw: add help for "split compound words" checkbox
    
    I.e. to compound-based "smart" hyphenation.
    
    Follow-up to commit e668dc84eb
    "tdf#173389 cui offapi sw xmloff: add custom compound-based
    hyphenation".
    
    
    Change-Id: I416fd601eb7116d66e06f09bf1d9b0a3363a05ce
    Reviewed-on: https://gerrit.libreoffice.org/c/help/+/211608
    Tested-by: Jenkins
    Reviewed-by: László Németh <nemeth@numbertext.org>
2026-09-30 14:49:42 +02:00
Caolán McNamara a1fa358d47 don't create the document BasicManager on save to check module sizes
Creating it loads every Basic library of the document. Only an
existing BasicManager can have loaded the password protected
modules that the size check looks at.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I1a66c4738d9a91cda785f0603c6f4fd6e6549802
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13628
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit 35fb01a50f47698e9b059b75c2a3b88699579fac)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211524
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 14:41:13 +02:00
Michael Weghorn 371bfd404f tdf#173273 basctl: Pass parent iter again in SbTreeListBox::ImpFindEntry
Before

    commit 4887919802
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Jan 1 13:02:42 2026 +0100

        basctl: Return std::unique_ptr in SbTreeListBox::ImpFindEntry

, SbTreeListBox::ImpFindEntry was using an in/out weld::TreeIter&
param that passed the parent.

The above commit changed the method to return the
result instead of using the out param, but missed that
the param was also used as an input parameter.

Restore the input parameter, but keep returning the
result.

The above commit also caused weld::TreeView::iter_children
to be caused with an invalid iter, which in combination with

    commit 9d055f5261
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Sat Jan 10 21:46:57 2026 +0100

        tdf#130857 weld: Filter dummy entries in base weld::TreeView::iter_children

would trigger a nullptr dereference for the vcl (SalInstanceTreeView)
implementation.

Making sure to pass a valid iter fixes that.

Also add an assert in SalInstanceTreeView::get_children_on_demand
to check that the iter that gets passed is actually valid which
would have triggered.

Backtrace of the crash seen for the tdf#173273 scenario
without this commit in place:

    1 __gnu_cxx::__normal_iterator<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>const *, std::__cxx1998::vector<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>>::__normal_iterator stl_iterator.h 1059 0x7fb3db75e001
    2 std::__cxx1998::vector<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>::begin stl_vector.h 999 0x7fb3db75e001
    3 std::__cxx1998::vector<std::unique_ptr<SvTreeListEntry, std::default_delete<SvTreeListEntry>>>::empty stl_vector.h 1214 0x7fb3db75cd76
    4 SvTreeListEntry::HasChildren treelistentry.cxx 72 0x7fb3db7879ad
    5 SalInstanceTreeView::GetPlaceHolderChild salvtables.cxx 3550 0x7fb3dba702d1
    6 SalInstanceTreeView::get_children_on_demand salvtables.cxx 4436 0x7fb3dba76ec1
    7 weld::TreeView::iter_children TreeView.cxx 165 0x7fb3dbed1735
    8 basctl::SbTreeListBox::ImpFindEntry bastype2.cxx 551 0x7fb38b4c0fe2
    9 basctl::SbTreeListBox::SetCurrentEntry bastype2.cxx 830 0x7fb38b4c009a
    10 basctl::SbTreeListBox::UpdateEntries bastype2.cxx 638 0x7fb38b4c0eba
    11 basctl::SbTreeListBox::onDocumentCreated bastype2.cxx 563 0x7fb38b4c11e9
    12 basctl::DocumentEventNotifier::Impl::documentEventOccured doceventnotifier.cxx 164 0x7fb38b4f0a39
    13 comphelper::OInterfaceContainerHelper4<com::sun::star::document::XDocumentEventListener>::NotifySingleListener<com::sun::star::document::DocumentEvent>::operator() interfacecontainer4.hxx 322 0x7fb3e1ef39d7
    14 comphelper::OInterfaceContainerHelper4<com::sun::star::document::XDocumentEventListener>::forEach<comphelper::OInterfaceContainerHelper4<com::sun::star::document::XDocumentEventListener>::NotifySingleListener<com::sun::star::document::DocumentEvent>, (anonymous namespace)::SfxGlobalEvents_Impl::implts_notifyListener(com::sun::star::document::DocumentEvent const&)::$_1>(std::unique_lock<std::mutex>&, comphelper::OInterfaceContainerHelper4<com::sun::star::document::XDocumentEventListener>::NotifySingleListener<com::sun::star::document::DocumentEvent>const&, (anonymous namespace)::SfxGlobalEvents_Impl::implts_notifyListener(com::sun::star::document::DocumentEvent const&)::$_1 const&) const interfacecontainer4.hxx 387 0x7fb3e1eefdd2
    15 comphelper::OInterfaceContainerHelper4<com::sun::star::document::XDocumentEventListener>::notifyEach<com::sun::star::document::DocumentEvent, (anonymous namespace)::SfxGlobalEvents_Impl::implts_notifyListener(com::sun::star::document::DocumentEvent const&)::$_1>(std::unique_lock<std::mutex>&, void (com::sun::star::document::XDocumentEventListener:: *)(com::sun::star::document::DocumentEvent const&), com::sun::star::document::DocumentEvent const&, (anonymous namespace)::SfxGlobalEvents_Impl::implts_notifyListener(com::sun::star::document::DocumentEvent const&)::$_1 const&) const interfacecontainer4.hxx 423 0x7fb3e1eef6e4
    16 (anonymous namespace)::SfxGlobalEvents_Impl::implts_notifyListener globalevents.cxx 487 0x7fb3e1eef505
    17 (anonymous namespace)::SfxGlobalEvents_Impl::documentEventOccured globalevents.cxx 226 0x7fb3e1eece4f
    18 (anonymous namespace)::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent>::operator() sfxbasemodel.cxx 3338 0x7fb3e1e79127
    19 comphelper::OInterfaceContainerHelper3<com::sun::star::document::XDocumentEventListener>::forEach<(anonymous namespace)::NotifySingleListenerIgnoreRE<com::sun::star::document::XDocumentEventListener, com::sun::star::document::DocumentEvent>> interfacecontainer3.hxx 278 0x7fb3e1e6ab15
    20 SfxBaseModel::postEvent_Impl sfxbasemodel.cxx 3372 0x7fb3e1e6a263
    21 SfxBaseModel::Notify sfxbasemodel.cxx 3005 0x7fb3e1e6976c
    22 SfxBroadcaster::Broadcast SfxBroadcaster.cxx 43 0x7fb3e0f3d0bc
    23 (anonymous namespace)::SfxEventAsyncer_Impl::IdleHdl appcfg.cxx 109 0x7fb3e1848ce9
    24 (anonymous namespace)::SfxEventAsyncer_Impl::LinkStubIdleHdl appcfg.cxx 102 0x7fb3e184885d
    25 Link<Timer *, void>::Call link.hxx 105 0x7fb3dbb3bda1
    26 Timer::Invoke timer.cxx 75 0x7fb3dbb3bc0c
    27 Scheduler::CallbackTaskScheduling scheduler.cxx 615 0x7fb3dbae368d
    28 SalTimer::CallCallback saltimer.hxx 53 0x7fb3d2709822
    29 X11SalData::Timeout saldata.cxx 532 0x7fb3d270801f
    30 SalXLib::CheckTimeout saldata.cxx 616 0x7fb3d270853e
    31 SalXLib::Yield saldata.cxx 697 0x7fb3d2708c1e
    32 X11SalInstance::DoYield salinst.cxx 173 0x7fb3d27259cd
    33 InnerYield svapp.cxx 388 0x7fb3dbb0e996
    34 Application::Yield svapp.cxx 501 0x7fb3dbb0e21f
    35 Application::Execute svapp.cxx 363 0x7fb3dbb0e005
    36 desktop::Desktop::Main app.cxx 1679 0x7fb3e5b1de65
    37 ImplSVMainRun svmain.cxx 234 0x7fb3dbb38bfc
    38 SalInstance::SVMainRun salinst.hxx 108 0x7fb3d2726761
    39 ImplSVMain svmain.cxx 221 0x7fb3dbb38122
    40 SVMain svmain.cxx 252 0x7fb3dbb39cb9
    41 soffice_main sofficemain.cxx 122 0x7fb3e5b979aa
    42 sal_main main.c 51 0x55fc90ad69fd
    43 main main.c 49 0x55fc90ad69d7

Change-Id: I3b282533ec43fdd37bfdf8739ff51d25197bf8be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211603
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-30 13:45:05 +02:00
Mike Kaganski d00d192770 tdf#157028 vcl: write the structure tree into object streams
Turning Tagged PDF on added 2.4 MB to the reporter's document, 2.0 MB of that
its structure tree: 12562 elements, each its own top-level object,
uncompressed, and each costing a further 20 bytes in the cross-reference
table.

The elements go into /Type/ObjStm streams of 200 now, with the parent and ID
trees. The cross-reference has to become a /Type/XRef stream with them,
because a table cannot address an object inside another object. PDF 1.5
introduced both, so a PDF/A-1b file keeps the plain form. So does an encrypted
file, since a string in an object stream shall not be separately encrypted,
and this writer encrypts strings as it builds the object. So does a hybrid
file, because sdext reads the embedded original document out of a trailer.

The reporter's document exported 3157118 bytes tagged before the change and
1086230 after, against 769448 untagged either way. An 8300-row Writer table
exported 4017140 bytes tagged before and 500967 after, against 73183 untagged.

testTdf159066 and testTdf173162 grep the exported bytes for something the
structure tree carries, /Alt< and the /Namespaces array. They inflate the
object streams first now. testListLabelPDFExport counted its List element in
the token stream, and asks GetObjects() for it.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I1e27dc3a8f43aa8b6c75ae930615c8d4b4645627
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13209
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit ad4bb8ae080aba98080dfaabd688dfdb48cf7ade)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211556
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-30 13:25:11 +02:00
Mike Kaganski e4efd9faf2 sw: compare positions, not pointers, when looking for a format redline
When a paragraph had a tracked format change before the selection,
formatting another author's tracked format change and rejecting the new
change kept the other author's formatting.

Since commit ee3171adb2 (tdf#143918 sw:
fix reject of multiple changes, 2021-08-19), lcl_SetRedline looked for
an existing redline over the range, and continued while
"pRStt <= rRg.Start()", which compared the addresses of the two
positions, not the positions themselves.

Compare the positions, and go on while the redline does not start after
the end of the range, because since commit
b5d0868ef42135beb0329ecb9302ce48b08fa2a8 (cool#15941 sw interdependent
redlines: fix creating a fmt on top of ins-then-fmt, 2026-06-17) a
redline inside the range counts as well.

For some reason, the added unit test fails without the fix only on
Windows; on Linux on my system, it passes without the fix.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I396567d8507e800fefcdc643a63ee6ad91b8b8ee
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13802
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 2da0c4fa2e5284b25f0dca85243a1f8ef5e9506b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211602
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 12:20:44 +02:00
Mike Kaganski 984efa1ff7 Simplify ChartExport::exportHatch
Make it fill the Hatch struct in all three cases, and only write it in
one place, for consistency.

Change-Id: Ibf4eb97e1c7046a5fe7397509fff9560140b5eef
Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13683
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit f14a9a4d3d45b08da075aa5a34b8d7daa5cae6a4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211597
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 12:19:32 +02:00
Gülşah Köse 111a2ffc8b cool#16233 sw: keep a formula's font size across DOCX import and export
An equation's size lives in the w:sz of its math runs. The import ignored it,
so every equation came in at the 12pt default of the formula editor, and a file
holding equations at three sizes showed all three the same. An equation whose
runs name no size takes the size of the text around it, which the styles and
the document defaults hold.

The export wrote no size at all. It now puts the size on every math run, and in
the control properties of each object, which is where the fraction bar, the
radical sign and the brackets take theirs from. The size travels in the w
namespace, so it goes out for a DOCX only, the way the color of a formula
already does.

Every formula now carries a size of its own on the way out, including one
written in ODF. Such a formula used to leave the size open and took whatever
the text around it had in the reading application. It now keeps the size it is
drawn at here, so both applications show it the same.

Setting the base size means giving each of the fonts that same size. The font
size dialog, the BaseFontHeight property of the model and this import each did
that on their own, so they now share SmFormat::SetBaseSizeAndFonts. The
property used to put the sizes in a copy that a later merge step reads only for
a font the same call has named, so a lone BaseFontHeight left the fonts alone.

Signed-off-by: Gülşah Köse <gulsah.kose@collabora.com>
Change-Id: I18b6c5814a57d8ccb8be5b7bdd357ce76cea024d
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13297
Reviewed-by: Balázs Varga <balazs.varga@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 582e3fdb6496d9f511dfefc1f716b4ead6cc3797)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211600
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 12:12:58 +02:00
Caolán McNamara 5a201620b2 svg export: check text hyperlink URLs the same way as shape ones
and have the slideshow open only http, https and mailto links

same check as:

commit 34ec465717
Date:   Mon Mar 4 09:38:02 2019 +0100

    Check svg URLs before exporting

text hyperlinks exported since:

commit b76628acb1
Date:   Sat Aug 11 22:23:22 2012 +0200

    text export support for bullets and hyperlinks

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I826ffb43f0e809f91d1728a9a3b39ebec5b83d6e
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13498
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 5f9e522ae9b43a9f4777d86accd20cce02d8fad3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211595
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 11:48:43 +02:00
Caolán McNamara f3f25e07f9 ofz#556994536 Null-dereference
\cell can arrive before \intbl, so the buffered cell end has no cell
properties to be replayed with

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: Ia94d2d7cd3179784db3dcf1bdbf8cf3b7fd2d2de
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/11286
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit cf9a5ad073aa6cac8bb2ad3a24640ee3663b9b41)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211596
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-30 11:35:52 +02:00
Caolán McNamara 6a22c3e9a2 count the boxes of every table in testTableBoxKeepsItsCellSection
so the check can be shared with a document whose damaged table is not
the first one

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I167e1e0dd2373c2ce9c6c233885d851c9c3f7280
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13646
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 1f22e425aabd46f484cdccb85e9784b1d8e32cb0)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211599
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-30 10:16:53 +02:00
Hossein 3cb281d3d0 tdf#173779 Add command label for tooltips with HELP_DEBUG=1
Previously, when setting HELP_DEBUG=1, the tooltips lacked the label
(description) for the commands in extended tip mode.

The problem was that, if the extended help content was empty, then the
ToolBox::RequestHelp() function added appropriate description. But, with
the help debug mode on, the tooltip was no longer empty. It containted
seperator "-------------" and the UNO command.

This patch adds the description when the extra help content is empty and
solves the issue. The result contains mnemonic characters like ~ which
can be suitable for debugging. These characters are removed with the
call to MnemonicGenerator::EraseAllMnemonicChars in ToolBox::RequestHelp
in a normal LibreOffice session without setting HELP_DEBUG.

Keyboard shortcuts are displayed in normal mode, but not in the extended
tips mode. This issue can be later fixed by adding the keyboard shortcut
to the tooltips when HELP_DEBUG=1 is set.

Change-Id: Iead828ece855fa3e712919ef62353dbca9db1d52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211577
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2026-09-30 09:46:31 +02:00