Commit Graph
25979 Commits
Author SHA1 Message Date
Caolán McNamara 890f388a78 move isScriptURLAllowed onto SfxObjectShell
it was private to sfx2's eventsupplier.hxx, so nothing outside sfx2
could run the AllowedDocumentEventURLs test

Change-Id: I814a965cafc245eb7b7f2d8fb18a81d1f7b7e50f
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10920
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 4a5b2dd74b4e82b183961ca8f50d80bd485d5359)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210591
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-09 12:59:48 +02:00
Dan Williams e4e60f2769 vcl: standardize Reset dialog button response code
Qt plugin automatically orders buttons for each platform based on
the button's role, which we derive from the Gtk .ui file's
action-widget response code. But to do that conversion from response
code to Qt button role, we need a standard response.

Without a standard response, the button has no role, and gets ordered
to the right of OK/Cancel buttons on Mac. With the correct role, it
is correctly placed far-left along with the Help button.

Change-Id: I16d3126d4999649e7aa6e72ec5e7b1a25f48c2a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210223
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
2026-09-08 13:42:17 +02:00
Julien Nabet e808025d6f tdf#146404: Fix number Format Code when reopen ods/fods
As Eike indicated in https://bugs.documentfoundation.org/show_bug.cgi?id=146404#c4
COLOR format codes are preserved in ods/fods format.
The pb was the missing map back.
Indeed, we had the mapping for [COLOR<something>] => Color value (eg: "ffaa16")
but not the reverse mapping Color value => [COLOR<something>]

Eike had provided the right code pointer in xmlnumfi.cxx.
First, I thought using PaletteManager but this one is in svx and svx shouldn't be used in xmloff
(dependency pb).
Then I used ChatGpt (GPT-5.6 Luna) and it pointed the right process.
It just consisted to use a similar callback system (DECL_LINK, IMPL_LINK, LINK) of GetUserDefinedColor.

In addition, by testing all this, I noticed that maList in XColorList::GetIndexOfColor was empty.
So I added the Load call in case mbListDirty is true.

Change-Id: I0ef6b5901f2e4c757e88994412dbf79a13100ffd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210518
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-09-07 10:17:29 +02:00
Julien Nabet 296b49f581 Related tdf#150928: replace character set by encoding (sc/part 3+connectivity)
Change-Id: I78d3c989be9e02e39d646b3c1eb672e3f37bd43c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209380
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-07 10:15:23 +02:00
Michael Weghorn 720a9455a6 a11y: Get UnoControl accessible without implementing XAccessible
By now, almost all a11y implementations implement both,
the XAccessible and XAccessibleContext interfaces themselves,
and they do so via the OAccessible base class.

One remaining case that only implements the XAccessible interface
directly is UnoControl. XAccessible::getAccessibleContext
is used from within AccessibleControlShape::Init to get the
accessible context. That accessible context however
is an OAccessible and implements both, the XAccessible
and XAccessibleContext interfaces again.

Stop requiring that UnoControl implements XAccessible
by instead adding a dedicated new method UnoControl::getAccessible
to directly get the OAccessible without relying on
the XAccessible interface being implemented by UnoControl.

In AccessibleControlShape::Init, cast to UnoControl
instead of querying for the XAccessible interface
and call the new method directly.

Stop implementing the XAccessible interface in
UnoControl as it is no longer needed now.

This aligns the UnoControl a11y logic more with how
a11y is implemented elsewhere across the code base.

Sample steps to trigger the modified code
when using the gtk3 vcl plugin on Linux:

* start the Orca screen reader
* start Writer
* insert a few push button controls using
  "Form" -> "Push Button" and then clicking into
  the document and dragging to insert
* disable design mode using "Form" -> "Design Mode"
* focus one of the controls by clicking on it
* press the Tab key to move focus between the controls

No differences in behavior were observed when
doing this with or without this change in place.

Side note: Announcement of the controls when they
receive focus didn't work (reliably) when opening an
existing document containing form controls instead of
inserting them into a new one, but that is preexisting
and unrelated to this commit.

Also adjust test AccessibleFixedTextTest::testFixedText
of the CppunitTest_toolkit_a11y test suite
accordingly that was assuming that it can
query the XAccessible interface directly
from the UNO control.

Change-Id: I8cc3902a8de725eda3d810920f1da2d390c06f73
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210464
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-05 10:43:42 +02:00
Dennis Francis 0bbeeeaf54 chart2: odf import/export of correlation circle chart
ODF has no name for this chart type, so the file says two things at once, the
way a histogram already does: chart:class names the scatter chart, which is the
nearest a reader that knows nothing of correlation circles can make of it, and
coext:class beside it names the type itself. A reader that knows the coext name
gets the chart back as it was saved.

The series need no new shape in the file. The feature column is the range of
the series and the two dimension columns are a domain each, which is where a
bubble chart already keeps its x and y values, so both the reading and the
writing of them follows the bubble path rather than a new logic.

The schema the tests validate against lists the values coext:class may take, so
the new one is added there beside the histogram.

The test document is one block of five columns: three features and then the two
dimensions, the shape the wizard asks for. The test checks after a round trip
that the chart type came back, that the file carries both class names, and that
every series still holds its feature column beside the two dimension columns.

Change-Id: Iac73ff357c7490b4f38a4390c63948cf148d8585
Signed-off-by: Dennis Francis <dennis.francis@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8106
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 4e59ea1c83e61b8dc2647f9a915884f9d461165d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210498
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-05 00:10:37 +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
Noel Grandin c9e799015c mbIsEditDoc is dead
ever since
  commit 110a25fdc2
  Author: Noel Grandin <noel.grandin@collabora.co.uk>
  Date:   Wed Jul 18 14:49:58 2018 +0200
  loplugin:unusedfields

Change-Id: I8406712984a6d9938d2b1951e9ac783ee8c10f44
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10450
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 1e9e993313bc0b5093c65e707681827ddef6d9b6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210501
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-05 00:09:05 +02:00
Noel Grandin ee065bc2f3 map->unordered_map in oox
this map does not need ordering and unordered_map is
both faster and more dense.

Change-Id: Ib8f45deaf6b89549ea80385039bb683df1b9140b
Signed-off-by: Noel Grandin <noelgrandin@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9930
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit ba832d776f118f3fdfa5a917b83dc89d16d4bf07)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210494
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-04 19:47:45 +02:00
Noel Grandin 2dd48c1130 map->unordered_map in oox
these maps do not need ordering, and unordered_map is both
faster and more memory dense.

Change-Id: If3bb393b186041b65dd7b4226ecdfd6af3c45aad
Signed-off-by: Noel Grandin <noelgrandin@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9929
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit b815bac54370e345c6a1254ce34a85deb24dfc3f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210493
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-04 19:47:40 +02:00
Xisco Fauli eb0c65a1a1 UnoApiTest: pass PDFium to parsePDFExport as parameter
so we can check if it's not a nullptr at test level

Change-Id: Icfe580b27f3ad4a28b328f0fac8cf93e05c50b54
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210484
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-04 15:32:19 +02:00
Michael Weghorn ef182d04d5 toolkit a11y: Pass OAccessible to UnoControl::DisposeAccessibleContext
Pass the more concrete OAccessible instead of a reference
to the abstract XComponent UNO interface.

Change-Id: Idcbf5c1eb09cc1380a85410b76d8b1e2df022b6d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210460
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-04 08:16:28 +02:00
Michael Weghorn 0ee559bf34 toolkit a11y: Use WeakRef to more concrete OAccessible in UnoControl
Switch from using a weak reference (css::uno::WeakReferenceHelper)
to the abstract XAccessibleContext UNO interface to a weak
reference (unotools::WeakReference) of the more concrete
OAccessible class in UnoControl.

This makes clear that the accessible is always an OAccessible
subclass and allows dropping some UNO-querying for the
wanted UNO interfaces.

Change-Id: Ib1ea66c83da9bbf76891c492d84aa57c396f2f44
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210459
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-04 08:15:05 +02:00
Michael Weghorn 753c9c6689 a11y: Drop unused XServiceInfo includes
basctl/source/basicide/baside3.cxx actually needs the
include and now no longer gets it transitively, so
add the include there directly.

Change-Id: Iff9eca9f7a8c9585522a783f63f77a5ab1555333
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210409
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-03 09:22:50 +02:00
Michael Weghorn d8a676c2ed a11y: Drop misleading mention of XServiceInfo in AccessibleBrowseBoxTableBase
AccessibleBrowseBoxTableBase does not implement the
XServiceInfo interface. The corresponding comment/doc
seems to have been wrong ever since

    commit e7a5ee68de
    Author: Jens-Heiner Rechtien <hr@openoffice.org>
    Date:   Wed Jun 27 14:18:49 2007 +0000

        INTEGRATION: CWS a11ysep (1.1.2); FILE ADDED
        2005/09/28 11:39:30 fs 1.1.2.2: manual resync (files have been moved herein from another location): licence change
        2005/03/07 08:27:24 fs 1.1.2.1: #i44293# moved implementations herein from svtools module

, so drop it.

Presumably, it was copy pasted from elsewhere, as
the same comments were seen elsewhere (where XServiceInfo
was actually implemented, however) until it was cleaned up
recently, e.g. in

    Change-Id: Iff25d87496bd35c2d5894ee21a104ede0dbd9e13
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Wed Sep 2 10:06:04 2026 +0200

        a11y: Stop declaring AccessibleContext support in AccessibleBrowseBoxBase

Change-Id: I4ab8bf5daee69490288a83cdbb3d6400d7bbafaa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210408
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-03 09:22:41 +02:00
Michael Weghorn 939a77b14c [API CHANGE] a11y: Drop com.sun.star.awt.AccessibleWindow
Drop the unpublished service
"com.sun.star.awt.AccessibleWindow"
because it's unused. (The IDL file only documents some
internal implementation details of the a11y classes
implementing the service.)

Change-Id: I958aeb6c6baaa48e2e02ab170b17db5c3510379b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210406
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-03 09:22:26 +02:00
Michael Weghorn 6b7f5e35c9 editeng a11y: Stop declaring AccessibleContext support in AccessibleContextBase
The com.sun.star.accessibility.AccessibleContext UNO service
is unnecessary and not really used for implementing a11y support,
apart from some a11y implementations declaring support for it.
What is relevant is the com.sun.star.accessibility.XAccessibleContext
interface instead.

Stop declaring support for the com.sun.star.accessibility.AccessibleContext
service in AccessibleContextBase and drop related
XServiceInfo::getImplementationName overrides in subclasses,
in preparation of dropping the service altogether in an upcoming
commit.

AccessibleDrawDocumentView currently still declares support
for the "com.sun.star.drawing.AccessibleDrawDocumentView"
service, so let it implement XServiceInfo directly, now that
it no longer inherits that from the AccessibleContextBase
base class.

Change-Id: Ie927cd98f9e1c8eb5a80bfaab5cb1dacb64dc238
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210403
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-03 09:21:27 +02:00
Michael Weghorn f4b5869832 a11y: Stop declaring AccessibleContext support in AccessibleBrowseBoxBase
The com.sun.star.accessibility.AccessibleContext UNO service
is unnecessary and not really used for implementing a11y support,
apart from some a11y implementations declaring support for it.
What is relevant is the com.sun.star.accessibility.XAccessibleContext
interface instead.

Stop declaring support for the com.sun.star.accessibility.AccessibleContext
service in AccessibleBrowseBoxBase (and drop related
XServiceInfo::getImplementationName overrides in subclasses),
in preparation of dropping the service altogether in an upcoming
commit.

Change-Id: Id6072c6ca066c9eda8e682ccfd6240e74d7307ab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210401
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-03 09:20:46 +02:00
Andrea Gelmini 88f74a167c Fix typos
Change-Id: I07cd6e0d99b2dd48ac6eaa5cacaaf871b65a1c64
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210446
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-09-03 09:02:25 +02:00
Andrea Gelmini 1520f7f1cf Fix typos
Change-Id: I29e2decc541cecbc5b2bf5bc5d32c53457e25a11
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210448
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-03 09:01:22 +02:00
Andrea Gelmini e330ca20a7 Fix typos
Change-Id: I351603ac840304c7697d269e216b8227fae40f75
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210445
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-03 09:00:23 +02:00
Andrea Gelmini 37e1aec4ed Fix typos
Change-Id: I121af263271437cf4013ef006d401a06ba3507b0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210444
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-03 08:54:54 +02:00
Andrea Gelmini 9c704826bb Fix typos
Change-Id: Ief7455c1b1955c292022f6a6e3b8c601a34bd8a8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210442
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-03 08:53:27 +02:00
Andrea Gelmini bfb4b0059f Fix typos
Change-Id: I570d70b3307a7a65dacbc4177ef004763f1e8b9b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210447
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-03 08:51:42 +02:00
Andrea Gelmini 30cc365def Fix typos
Change-Id: I42e6c0c272cd5b83bb2747d938049a64d4b19936
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210443
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-09-03 08:50:28 +02:00
Heiko Tietze c3844e912e Resolve tdf#171925 - Remove uno:SendFeedback / SID_SEND_FEEDBACK
Change-Id: I0a65e7a4ba1cd37fb28299c324027b31c41daacf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210340
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-09-02 06:05:11 +02:00
Aron Budea 07047a02f9 sw DOCX: add support for importing/exporting webSettings.xml
Only if already exists in file, use GrabBag.

For strict OOXML, replace namespaces with transitional names.

Change-Id: Idc1f99b7c096e87558fdb78278a534ffd2bc5587
Signed-off-by: Aron Budea <aron.budea@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8590
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit d8f3abfb7044be0e7e1c56602aae506911ad33b8)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210362
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-02 01:03:42 +02:00
Noel Grandin 1318b7834e drop EditTextObject::CreateAttrib
which means we can move XEditAttribute back inside editeng,
no need to expose it in the module header.

Change-Id: Ica8bcf7d1414b582011b473aac807b8a7a7369eb
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10688
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 60d0dc551f7acb6bbdfc8ee2f4c8369eff3df4c0)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210360
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-02 01:03:33 +02:00
Mike Kaganski 4c9116ee9d tdf#166401: keep text in a picture placeholder
A slide's picture placeholder can hold text the author typed instead of an
image, which PowerPoint displays. Impress dropped that text on import and
wrote nothing at all for such a shape on save. To reproduce, type into a
picture placeholder in PowerPoint, save, open the file and save it again:
the text is gone from the shape, and the shape from the file.

What a placeholder is now lives in the page's presentation object list, and
what represents it follows what it holds: a graphic object for a picture, an
SdrObjKind::OutlineText object while it holds text, the placeholder itself
while it holds nothing. It changes over when a file states such text, when
that text is deleted again and the prompt comes back, and when an image is
put in. Text arriving another way, through the API, is caught by the new
SdrPage::onEmptyPresObjFilled and switched at the next idle, so that route
needs a spinning scheduler; what a save writes is right either way. An object
in text edit is left to that edit, which is where it changes over: the idle
pass walks every page, so it asks each object rather than trusting the one
that asked for the pass - in a shared document another view holds it. That
switch is the model's own and covered by no undo step - it answers for a
document the API changed, not for anything the user did.

What the file says about the shape travels with it both ways, the graphic
items included, so an outline a picture placeholder is clipped to is still
there when a picture arrives. It is not written while the placeholder holds
text: the file says text box, and a text box states no geometry to clip a
picture to.

PPTX writes it as the placeholder it is, with the text it holds. ODF states
the class of what represents it, so the placeholder's own class travels
beside it as coext:placeholder-class, and a reader that ignores the
extension sees an outline placeholder with the text.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I0f3353115e56d63a4158ebaeb5689689499894bb
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9441
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 7921401ae48188568e1016db00bd90256d666a6a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210329
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-09-01 19:52:06 +02:00
Mike Kaganski ecf0efa073 tdf#165609: save the form control label font and alignment
The XLSX export wrote the label as a bare <font> element, so a checkbox
came back with the control default font at 10pt and adjacent labels
overlapped. The label's font name, size and colour, its bold, italic,
underline and strikeout, and its horizontal and vertical alignment are
now written out.

The underline stopped reaching the export altogether when the control
property list started asking for "FontLineStyle", which no control model
has: commit 3187193a61 (tools: rename
FontUnderline to FontLineStyle, 2016-01-29) renamed the VCL enum and
took the UNO property name string along. The same rename hit
sw/source/filter/html/htmlforw.cxx, which is not handled here and needs
a separate fix. A double underline also needs the "fontN" class on the
underline element, which the import compared with a literal "font4",
introduced with no explanation given in commit
04c272eb83 (dr77: #i114128# import legacy
drawing controls, 2010-08-26). N is the index into the workbook font
table, and is treated as one now.

Excel keeps the label font in the VML shape, in the DrawingML run
properties and in a workbook font record, and builds its model from the
DrawingML, while we read the VML and the record it names. Both are
written here so that the two applications show the same document. TODO:
read the label font from the DrawingML run properties, as Excel does.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I87259d25a68829f6c1a78179f8e3aa7811a5688f
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9927
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit ca86699205743f2709f3cd5d412a8a3f0d3fba38)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210334
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-01 19:51:44 +02:00
Noel Grandin 3b52fbc96f merge EditTextObjectImpl into EditTextObject
this is a weird kind of pimpl pattern, lets just simplify it.

Which means we can remove the Clone() method in favour
of a normal copy constructor.

Change-Id: Ib5793c66df4729f48def8b3cead0f39f2ba94830
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10550
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit dd8a795b5aed4c44e11eef86eaf19b1f88edf0f8)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210320
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-01 15:40:01 +02:00
Mike Kaganski 64fe896867 tdf#166401: keep a placeholder's prompt in ODF
Commit 67ba6ccd5a (tdf#140912, tdf#159219:
fix import of graphic placeholder with custom prompt, 2024-01-17) left
the prompt out of ODF for want of a representation, so a reload replaced
an authored one with our own localized default. It now travels as a
coext:placeholder-prompt attribute beside presentation:placeholder, on
draw:frame and draw:page-thumbnail, written when saving with extensions
and added to the extended schema so the round trip validates. It is
also listed in the Collabora ODF extensions notes.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I12b51ff2bc103e5c26e94558802064919c7289dd
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9070
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 6b1b6331ada0cc948e880eb83db5506f8bf1aa9c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210297
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-31 23:49:35 +02:00
Tomaž Vajngerl 1ff770e5bf sc: bind the # operator to the reference it follows
The # postfix operator was parsed at the same level as the percent
sign, which is looser than the prefix operators. Because of this
=@A1# compiled to the spill range of an implicit intersection and
=-A1# to the spill range of a negated value. Neither of those means
anything, and OOXML writes the # around the reference alone in both
cases.

The # is now parsed right after the factor it follows, tighter than any
operator that can come before it. A whole range reference goes inside,
because the lexer reads A1:A3 as a single reference. The percent sign
stays above the reference operators, so =A1%# leaves the # with nothing
to bind to and doesn't parse, and the export drops such a # (OOXML has
no spelling for it either).

A blank between two operands is only the intersection operator if both
sides yield a reference. The # does, so the checks that keep the blank
alive and that keep the operator once the operands are known had to be
told about it.

The interpreter passes the spill range on as a matrix that carries the
range it was read from. The intersection, range and union operators
only took references and refused that, so PopReferenceOperand now
hands them the carried range as a double reference.

Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>
Change-Id: I1a587bf291ff639b326a366b8efc332106eb5fd3
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10156
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit c589c34aaec00d60fc47f1933762b105f9d22de3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210293
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-31 17:35:25 +02:00
Jim Raykowski c51dff06a9 Impress slide properties dialog: use "slide" instead of "page"
* Makes the title show as "Slide Properties" instead of "Page
Properties".

* Makes the label for the resize all slides checkbox show as "Resize all
slides" instead of "Resize all pages"

Change-Id: Idda0bdf6ef6215696ae4189549f62c05ef0076c4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209996
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
2026-08-31 17:04:56 +02:00
Tomaž Vajngerl 1ac50fddc7 sc: rewrite the token array into the OOXML shape
OOXML writes @ and # as calls and a reference union as a parenthesised
list, so for each of them we need to know how far the sub-expression
under it reaches. CreateStringFromTokenArray worked that out from the
text it had already written. The problem with this is that every pair
it spliced in shifted all the offsets that were still waiting behind
it, so it kept breaking.

Instead of patching the text, OOXMLRewriter builds a second
token array in the shape OOXML spells out and the writer walks that as
it stands. The call names and the parentheses are ordinary tokens, so
there is nothing to splice and no offsets to keep track of. It is the
same trick RewriteMissing already plays a few lines further up, and it
means the input and the output can be looked at side by side.

The # changes place, from behind its operand to a call in front of it,
so it gets an opcode of its own. _xlfn.ANCHORARRAY spells ocAnchorArray
now, and ocSpill keeps the native postfix spelling with no OOXML one at
all, so the postfix form cannot end up in a file by accident. The
import already rewrote the call back into the postfix operator and now
recognises it by opcode instead of by position. The @ stays
ocSingleValue, it is already in front of its operand so only the
parentheses are new.

The OFFSET() literal argument is swapped for the reference error in
the same pass, instead of the writing loop jumping over tokens.

A unit test drives the rewrite on its own: token array in, token array
out, one case per shape. The shapes that end up with nothing to wrap
are in there too - a lone @, one with a missing argument, and text that
never parsed - since those are the ones where dropping a token is the
only change.

Also drop the dead "@" and "#" rows from the OOXML symbol table, the
rows above them already have _xlfn.SINGLE and _xlfn.ANCHORARRAY.

Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>
Change-Id: I63944fb85b5c4388f304f7d94afd0b4f347d7782
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10155
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 4feac84950f5b524d99e277481de50f7b45a8d2f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210292
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-31 15:56:50 +02:00
Noel Grandin 7b0729cd8b UpdateAllLinks pParent parameter is always nullptr
Change-Id: I67b9bc9cb235d66ffb4eef1d6a01535664b30bc7
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10464
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 178ec8504f2fe78725c2f9bff78f1db698b8fca3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210286
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-31 15:56:24 +02:00
Andrea Gelmini c664918e40 Fix typos
Change-Id: I4209ef12af9e6cecb97e290a35a9de4d5f738ad5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210164
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-08-29 16:20:13 +02:00
Mike Kaganski 5f26da385c cool#16083: do not take a prompt as slide content
A slide placeholder took its layout placeholder's paragraphs as its own text, so
it arrived filled and stopped offering to insert a table, a chart or a picture.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I879dc64e0129101623fda42361afb13b6be3e4e3
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9286
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit e00c44aa81d7d695a34eddf7e672f926aa7fc955)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210246
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-29 13:48:13 +02:00
Andrea Gelmini 9d84af48a8 Fix typos
Change-Id: Ibfe0cacf5c01753b4920280624876f6c9d951e0d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210163
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-28 16:33:11 +02:00
Michael Weghorn ef7971f80c Use QueryDialog directly instead of via cui abstraction
Now that previous commit

    Change-Id: I57bdade32c21c7ab40c5a4c90bd86e8dea5d2fad
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Aug 27 19:00:42 2026 +0200

        Move QueryDialog to svtools

moved QueryDialog to svtools, use it directly instead
of via the extra AbstractQueryDialog abstraction.

This simplifies the code and rules out one potential cause
for the crash seen in crash reports like [1] (see backtrace below).

From looking at the backtrace and code, I don't currently see anything
that looks problematic to me and could result in a null dialog or button
in a proper installation. Simplifying this seems a good idea anyway, and
rules out a null dialog.
Related discussion: [2]

The dialog can e.g. be triggered like this:

* start Writer
* Ctrl+Shift+S for "Save As"
* select "Text (.txt)" for the file type
* press OK

(Resetting the profile ensures the dialog gets shown
in case the "Don't show again" checkbox has been ticked
previously.)

Backtrace from [1]:

    0 	mergedlo.dll 	static void `anonymous namespace'::AbstractQueryDialog_Impl::SetYesLabel(const class rtl::OUString & const) 	cui/source/factory/dlgfact.cxx:1562
    1 	mergedlo.dll 	static void `anonymous namespace'::AbstractQueryDialog_Impl::SetYesLabel(const class rtl::OUString & const) 	cui/source/factory/dlgfact.cxx:1562
    2 	mergedlo.dll 	ConfirmationDlg::Query<officecfg::Office::Common::Save::Document::WarnAlienFormat>(weld::Window *,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &) 	include/svtools/confirmationdlg.hxx:32
    3 	mergedlo.dll 	ConfirmationDlg::Query<officecfg::Office::Common::Save::Document::WarnAlienFormat>(weld::Window *,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &) 	include/svtools/confirmationdlg.hxx:24
    4 	mergedlo.dll 	SfxStoringHelper::WarnUnacceptableFormat(com::sun::star::uno::Reference<com::sun::star::frame::XModel2> const &,std::basic_string_view<char16_t,std::char_traits<char16_t> >,std::basic_string_view<char16_t,std::char_traits<char16_t> >,rtl::OUString const &,bool) 	sfx2/source/doc/guisaveas.cxx:2114
    5 	mergedlo.dll 	ModelData_Impl::CheckFilter(rtl::OUString const &) 	sfx2/source/doc/guisaveas.cxx:861
    6 	mergedlo.dll 	com::sun::star::uno::cppu_detail_getUnoType(com::sun::star::uno::RuntimeException const *) 	E:/build/workdir/UnoApiHeadersTarget/udkapi/normal/com/sun/star/uno/RuntimeException.hpp:89
    7 	ntdll.dll 	0x3c3a0
    8 	mergedlo.dll 	ModelData_Impl::CheckFilter(rtl::OUString const &) 	sfx2/source/doc/guisaveas.cxx:781
    9 	mergedlo.dll 	SfxStoringHelper::FinishGUIStoreModel(std::_List_const_iterator<std::_List_val<std::_List_simple_types<std::pair<comphelper::OUStringAndHashCode const ,com::sun::star::uno::Any> > > > &,ModelData_Impl &,bool,short,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &,bool,bool,bool,std::basic_string_view<char16_t,std::char_traits<char16_t> >,std::basic_string_view<char16_t,std::char_traits<char16_t> >,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &,rtl::OUString,SignatureState) 	sfx2/source/doc/guisaveas.cxx:1680
    10 	cppu3.dll 	typelib_typedescriptionreference_release 	cppu/source/typelib/typelib.cxx:2145
    11 	cppu3.dll 	cppu::_destructData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *)) 	cppu/source/uno/destr.hxx:312
    12 	cppu3.dll 	cppu::_destructData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *)) 	cppu/source/uno/destr.hxx:308
    13 	ucrtbase.dll 	0x1364b
    14 	sal3.dll 	rtl_uString_assign 	sal/rtl/ustring.cxx:1169
    15 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    16 	mergedlo.dll 	SfxStoringHelper::FinishGUIStoreModel(std::_List_const_iterator<std::_List_val<std::_List_simple_types<std::pair<comphelper::OUStringAndHashCode const ,com::sun::star::uno::Any> > > > &,ModelData_Impl &,bool,short,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &,bool,bool,bool,std::basic_string_view<char16_t,std::char_traits<char16_t> >,std::basic_string_view<char16_t,std::char_traits<char16_t> >,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &,rtl::OUString,SignatureState) 	sfx2/source/doc/guisaveas.cxx:1620
    17 	mergedlo.dll 	SfxStoringHelper::GUIStoreModel(com::sun::star::uno::Reference<com::sun::star::frame::XModel2> const &,std::basic_string_view<char16_t,std::char_traits<char16_t> >,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &,bool,SignatureState,SignatureState,bool) 	sfx2/source/doc/guisaveas.cxx:1605
    18 	mergedlo.dll 	SvtSecurityOptions::SetTrustedAuthors(std::vector<SvtSecurityOptions::Certificate,std::allocator<SvtSecurityOptions::Certificate> > const &) 	unotools/source/config/securityoptions.cxx:283
    19 	ntdll.dll 	0x3ccea
    20 	ucrtbase.dll 	0x1f038
    21 	ntdll.dll 	0x3b041
    22 	cppu3.dll 	uno_type_sequence_construct 	cppu/source/uno/sequence.cxx:668
    23 	mergedlo.dll 	SfxObjectShell::ExecFile_Impl(SfxRequest &) 	sfx2/source/doc/objserv.cxx:1150
    24 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    25 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    26 	cppu3.dll 	cppu::icopyConstructSequence(_sal_Sequence *,_typelib_TypeDescriptionReference *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:398
    27 	cppu3.dll 	cppu::_copyConstructAnyFromData(_uno_Any *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:231
    28 	cppu3.dll 	cppu::_copyConstructAny(_uno_Any *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:284
    29 	cppu3.dll 	uno_type_any_assign 	cppu/source/uno/any.cxx:38
    30 	salhelper3MSC.dll 	salhelper::SimpleReferenceObject::release() 	include/salhelper/simplereferenceobject.hxx:80
    31 	mergedlo.dll 	configmgr::Access::getByNameFast(rtl::OUString const &,com::sun::star::uno::Any &) 	configmgr/source/access.cxx:393
    32 	ntdll.dll 	0x3b041
    33 	ucrtbase.dll 	0x1364b
    34 	cppu3.dll 	cppu::_type_equals(_typelib_TypeDescriptionReference const *,_typelib_TypeDescriptionReference const *) 	cppu/source/uno/prim.hxx:144
    35 	cppu3.dll 	cppu::_assignData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void * (*)(void *,_typelib_TypeDescriptionReference *),void (*)(void *),void (*)(void *)) 	cppu/source/uno/assign.hxx:387
    36 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    37 	cppu3.dll 	typelib_typedescription_release 	cppu/source/typelib/typelib.cxx:1313
    38 	cppu3.dll 	typelib_typedescriptionreference_release 	cppu/source/typelib/typelib.cxx:2145
    39 	ntdll.dll 	0x3d6da
    40 	ntdll.dll 	0x3ccea
    41 	mergedlo.dll 	FontMetricData::ShouldNotUseUnderlineMetrics() 	vcl/source/font/fontmetric.cxx:186
    42 	mergedlo.dll 	OutputDevice::InitFont() 	vcl/source/outdev/font.cxx:668
    43 	ntdll.dll 	0x3c3a0
    44 	i18nlangtag.dll 	LanguageTag::LanguageTag(LanguageTag const &) 	include/i18nlangtag/languagetag.hxx:142
    45 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::make_unique() 	include/o3tl/cow_wrapper.hxx:298
    46 	ucrtbase.dll 	0x276aa
    47 	mergedlo.dll 	vcl::Font::SetFontSize(Size const &) 	vcl/source/font/font.cxx:156
    48 	ucrtbase.dll 	0x1364b
    49 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    50 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::release() 	include/o3tl/cow_wrapper.hxx:201
    51 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::release() 	include/o3tl/cow_wrapper.hxx:198
    52 	mergedlo.dll 	ImpEditEngine::RecalcFormatterFontMetrics(FormatterFontMetric &,SvxFont &) 	editeng/source/editeng/impedit3.cxx:3182
    53 	ucrtbase.dll 	0x272e4
    54 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    55 	ucrtbase.dll 	0x27691
    56 	mergedlo.dll 	ImpEditEngine::GetJustification(long) 	editeng/source/editeng/impedit2.cxx:2077
    57 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::release() 	include/o3tl/cow_wrapper.hxx:198
    58 	mergedlo.dll 	ImpEditEngine::CreateAndInsertEmptyLine(ParaPortion &) 	editeng/source/editeng/impedit3.cxx:1994
    59 	mergedlo.dll 	SfxItemPool::GetUserOrPoolDefaultItem(unsigned short) 	svl/source/items/itempool.cxx:723
    60 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    61 	mergedlo.dll 	ParaPortionList::GetPos(ParaPortion const *) 	editeng/source/editeng/editdoc.cxx:496
    62 	mergedlo.dll 	ImpEditEngine::CalcHeight(ParaPortion &) 	editeng/source/editeng/impedit2.cxx:4791
    63 	mergedlo.dll 	ImpEditEngine::FinishCreateLines(ParaPortion &) 	editeng/source/editeng/impedit3.cxx:2003
    64 	mergedlo.dll 	ImpEditEngine::FinishCreateLines(ParaPortion &) 	editeng/source/editeng/impedit3.cxx:1999
    65 	mergedlo.dll 	ImpEditEngine::CreateLines(long,unsigned long) 	editeng/source/editeng/impedit3.cxx:670
    66 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    67 	mergedlo.dll 	static lo_destroy$dtor$0()
    68 	mergedlo.dll 	boost::locale::gnu_gettext::mo_file::value(unsigned int) 	E:/build/workdir/UnpackedTarball/boost/libs/locale/src/shared/message.cpp:196
    69 	mergedlo.dll 	boost::locale::gnu_gettext::mo_file::find(char const *,char const *) 	E:/build/workdir/UnpackedTarball/boost/libs/locale/src/shared/message.cpp:145
    70 	ucrtbase.dll 	0x11966
    71 	sal3.dll 	rtl_uString_ImplAlloc(long) 	sal/rtl/ustring.cxx:1109
    72 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    73 	ntdll.dll 	0x3d6da
    74 	ntdll.dll 	0x3d6da
    75 	mergedlo.dll 	SfxItemPool::GetUserOrPoolDefaultItem(unsigned short) 	svl/source/items/itempool.cxx:723
    76 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    77 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:935
    78 	mergedlo.dll 	ImpEditEngine::CalcVertLineSpacing(Point &) 	editeng/source/editeng/impedit3.cxx:4436
    79 	mergedlo.dll 	SfxItemPool::GetUserOrPoolDefaultItem(unsigned short) 	svl/source/items/itempool.cxx:723
    80 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    81 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:935
    82 	mergedlo.dll 	ImpEditEngine::IterateLineAreas(std::function<ImpEditEngine::CallbackResult > const &,ImpEditEngine::IterFlag) 	editeng/source/editeng/impedit2.cxx:3417
    83 	mergedlo.dll 	_std_minmax_8i 	D:/a/_work/1/s/src/vctools/crt/github/stl/src/vector_algorithms.cpp:2451
    84 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    85 	mergedlo.dll 	RectangleTemplateBase::Union(RectangleTemplateBase const &) 	tools/source/generic/gen.cxx:88
    86 	mergedlo.dll 	ImpEditEngine::CalcVertLineSpacing(Point &) 	editeng/source/editeng/impedit3.cxx:4436
    87 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    88 	ntdll.dll 	0x3c3a0
    89 	mergedlo.dll 	ImpEditEngine::IterateLineAreas(std::function<ImpEditEngine::CallbackResult > const &,ImpEditEngine::IterFlag) 	editeng/source/editeng/impedit2.cxx:3417
    90 	ntdll.dll 	0x3b041
    91 	ucrtbase.dll 	0x1364b
    92 	mergedlo.dll 	std::allocator<long>::deallocate(long * const,unsigned __int64) 	C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/include/xmemory:985
    93 	mergedlo.dll 	std::allocator<long>::deallocate(long * const,unsigned __int64) 	C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/include/xmemory:982
    94 	mergedlo.dll 	ImpEditEngine::FormatDoc() 	editeng/source/editeng/impedit3.cxx:412
    95 	mergedlo.dll 	ImpEditEngine::CallStatusHdl() 	editeng/source/editeng/impedit3.cxx:4368
    96 	mergedlo.dll 	ImpEditEngine::UpdateViews(EditView *) 	editeng/source/editeng/impedit3.cxx:188
    97 	mergedlo.dll 	ImpEditEngine::UpdateViews(EditView *) 	editeng/source/editeng/impedit3.cxx:155
    98 	mergedlo.dll 	ImpEditEngine::SetUpdateLayout(bool,EditView *,bool) 	editeng/source/editeng/impedit3.cxx:4247
    99 	mergedlo.dll 	EditEngine::SetUpdateLayout(bool,bool) 	editeng/source/editeng/editeng.cxx:800
    100 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    101 	sclo.dll 	ScInputHandler::EnterHandler2(ScEnterMode,bool,rtl::OUString,rtl::OUString const &) 	sc/source/ui/app/inputhdl.cxx:3646
    102 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    103 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    104 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    105 	ucrtbase.dll 	0x11966
    106 	ntdll.dll 	0x633f2
    107 	ntdll.dll 	0x3c3a0
    108 	ucrtbase.dll 	0x1364b
    109 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    110 	mergedlo.dll 	ContentNode::GetExpandedText(long,long) 	editeng/source/editeng/ContentNode.cxx:472
    111 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    112 	mergedlo.dll 	EditEngine::GetText(long) 	editeng/source/editeng/editeng.cxx:946
    113 	ntdll.dll 	0x3b041
    114 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    115 	ucrtbase.dll 	0x1364b
    116 	sclo.dll 	ScInputHandler::EnterHandler2(ScEnterMode,bool,rtl::OUString,rtl::OUString const &) 	sc/source/ui/app/inputhdl.cxx:3333
    117 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1119
    118 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    119 	sclo.dll 	ScInputHandler::EnterHandler(ScEnterMode,bool) 	sc/source/ui/app/inputhdl.cxx:3329
    120 	mergedlo.dll 	static void xmloff::token::`dynamic initializer for 'aTokenList''() 	xmloff/source/core/xmltoken.cxx:3474
    121 	ntdll.dll 	0x53850
    122 	KERNELBASE.dll 	0x2931b
    123 	VCRUNTIME140.dll 	0x48a9
    124 	ntdll.dll 	0x53850
    125 	ucrtbase.dll 	0x1f038
    126 	mergedlo.dll 	SfxInterface::GetSlot(unsigned short) 	sfx2/source/control/objface.cxx:163
    127 	mergedlo.dll 	SfxInterface::GetSlot(unsigned short) 	sfx2/source/control/objface.cxx:157
    128 	mergedlo.dll 	SfxObjectShell::ExecFile_Impl(SfxRequest &) 	sfx2/source/doc/objserv.cxx:557
    129 	mergedlo.dll 	SfxShell::ExecuteSlot(SfxRequest &,SfxInterface const *) 	sfx2/source/control/shell.cxx:475
    130 	sclo.dll 	SfxStubScTabViewShellExecuteSave(SfxShell *,SfxRequest &) 	E:/build/workdir/SdiTarget/sc/sdi/scslots.hxx:1584
    131 	sclo.dll 	SfxStubScTabViewShellExecuteSave(SfxShell *,SfxRequest &) 	E:/build/workdir/SdiTarget/sc/sdi/scslots.hxx:1584
    132 	mergedlo.dll 	SfxDispatcher::Call_Impl(SfxShell &,SfxSlot const &,SfxRequest &,bool) 	sfx2/source/control/dispatch.cxx:258
    133 	mergedlo.dll 	SfxDispatcher::Call_Impl(SfxShell &,SfxSlot const &,SfxRequest &,bool) 	sfx2/source/control/dispatch.cxx:219
    134 	mergedlo.dll 	SfxBindings::Execute_Impl(SfxRequest &,SfxSlot const *,SfxShell &) 	sfx2/source/control/bindings.cxx:1051
    135 	mergedlo.dll 	operator new(unsigned __int64) 	D:/a/_work/1/s/src/vctools/crt/vcstartup/src/heap/new_scalar.cpp:36
    136 	mergedlo.dll 	cppu::PartialWeakComponentImplHelper<com::sun::star::lang::XServiceInfo,com::sun::star::frame::XFrame2,com::sun::star::awt::XWindowListener,com::sun::star::awt::XTopWindowListener,com::sun::star::awt::XFocusListener,com::sun::star::document::XActionLockable,com::sun::star::util::XCloseable,com::sun::star::frame::XComponentLoader,com::sun::star::frame::XTitle,com::sun::star::frame::XTitleChangeBroadcaster,com::sun::star::beans::XPropertySet,com::sun::star::beans::XPropertySetInfo>::acquire() 	include/cppuhelper/compbase.hxx:83
    137 	mergedlo.dll 	SfxUnoFrameItem::SfxUnoFrameItem(SfxUnoFrameItem const &)
    138 	mergedlo.dll 	struct std::pair<std::_List_node<std::pair<unsigned short const ,SfxPoolItem const *>,void *> *,bool> std::_Hash<std::_Umap_traits<unsigned short,SfxPoolItem const *,std::_Uhash_compare<unsigned short,std::hash<unsigned short>,std::equal_to<unsigned short> >,std::allocator<std::pair<unsigned short const ,SfxPoolItem const *> >,0> >::_Try_emplace<unsigned short const &>(const unsigned short & const) 	C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/include/xhash:707
    139 	mergedlo.dll 	SfxUnoFrameItem::SfxUnoFrameItem(SfxUnoFrameItem const &)
    140 	mergedlo.dll 	SfxItemSet::SfxItemSet(SfxItemSet const &) 	svl/source/items/itemset.cxx:270
    141 	mergedlo.dll 	SfxBindings::Execute_Impl(SfxRequest &,SfxSlot const *,SfxShell &) 	sfx2/source/control/bindings.cxx:965
    142 	mergedlo.dll 	SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const &,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &,com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const &) 	sfx2/source/control/unoctitm.cxx:737
    143 	cppu3.dll 	cppu::_copyConstructAnyFromData(_uno_Any *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:250
    144 	cppu3.dll 	cppu::_assignData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void * (*)(void *,_typelib_TypeDescriptionReference *),void (*)(void *),void (*)(void *)) 	cppu/source/uno/assign.hxx:417
    145 	cppu3.dll 	static void typelib_typedescription_destructExtendedMembers(struct _typelib_TypeDescription *) 	cppu/source/typelib/typelib.cxx:1308
    146 	mergedlo.dll 	static class std::unique_ptr<com::sun::star::uno::ContextLayer,std::default_delete<com::sun::star::uno::ContextLayer> > `anonymous namespace'::EnsureJavaContext() 	sfx2/source/control/unoctitm.cxx:229
    147 	mergedlo.dll 	SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const &,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &,com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const &) 	sfx2/source/control/unoctitm.cxx:572
    148 	mergedlo.dll 	static class std::unique_ptr<com::sun::star::uno::ContextLayer,std::default_delete<com::sun::star::uno::ContextLayer> > `anonymous namespace'::EnsureJavaContext() 	sfx2/source/control/unoctitm.cxx:229
    149 	mergedlo.dll 	SfxOfficeDispatch::dispatch(com::sun::star::util::URL const &,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &) 	sfx2/source/control/unoctitm.cxx:256
    150 	mergedlo.dll 	static void framework::`anonymous namespace'::AsyncMenuExecute(void *, void *) 	framework/source/uielement/menubarmanager.cxx:793
    151 	mergedlo.dll 	static void framework::`anonymous namespace'::AsyncMenuExecute(void *, void *) 	framework/source/uielement/menubarmanager.cxx:789
    152 	mergedlo.dll 	ImplWindowFrameProc(vcl::Window *,SalEvent,void const *) 	vcl/source/window/winproc.cxx:2871
    153 	vclplug_winlo.dll 	static bool ImplHandleMouseMsg(struct HWND__ *, unsigned int, unsigned __int64, __int64) 	vcl/win/window/salframe.cxx:3311
    154 	ntdll.dll 	0x3365b
    155 	ntdll.dll 	0x3d809
    156 	user32.dll 	0x1b5e9
    157 	mergedlo.dll 	SalFrame::CallCallback(SalEvent,void const *) 	vcl/inc/salframe.hxx:311
    158 	mergedlo.dll 	SalFrame::CallCallback(SalEvent,void const *) 	vcl/inc/salframe.hxx:311
    159 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:6136
    160 	user32.dll 	0x13b04
    161 	skialo.dll 	static void `anonymous namespace'::RasterWindowContext_win::onSwapBuffers(const struct SkIRect *) 	E:/build/workdir/UnpackedTarball/skia/tools/window/win/RasterWindowContext_win.cpp:89
    162 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    163 	ntdll.dll 	0x2e71a
    164 	ntdll.dll 	0x28b33
    165 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:5738
    166 	vclplug_winlo.dll 	SalFrameWndProcW(HWND__ *,unsigned int,unsigned __int64,__int64) 	vcl/win/window/salframe.cxx:6145
    167 	vclplug_winlo.dll 	SalFrameWndProcW(HWND__ *,unsigned int,unsigned __int64,__int64) 	vcl/win/window/salframe.cxx:6140
    168 	user32.dll 	0x18eb8
    169 	vclplug_winlo.dll 	WinSalYieldMutex::doRelease(bool) 	vcl/win/app/salinst.cxx:150
    170 	msvcp140.dll 	0x1285b
    171 	user32.dll 	0x18bec
    172 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:6137
    173 	user32.dll 	0x18771
    174 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:6137
    175 	mergedlo.dll 	OpenGLContext::prepareForYield() 	vcl/source/opengl/OpenGLContext.cxx:377
    176 	vclplug_winlo.dll 	ImplSalYield(bool,bool) 	vcl/win/app/salinst.cxx:409
    177 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    178 	sal3.dll 	osl_setCondition 	sal/osl/w32/conditn.cxx:55
    179 	vclplug_winlo.dll 	WinSalInstance::DoYield(bool,bool) 	vcl/win/app/salinst.cxx:484
    180 	vclplug_winlo.dll 	WinSalInstance::DoYield(bool,bool) 	vcl/win/app/salinst.cxx:468
    181 	mergedlo.dll 	static bool InnerYield(bool, bool) 	vcl/source/app/svapp.cxx:389
    182 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    183 	mergedlo.dll 	static bool InnerYield(bool, bool) 	vcl/source/app/svapp.cxx:376
    184 	mergedlo.dll 	Application::Execute() 	vcl/source/app/svapp.cxx:364
    185 	mergedlo.dll 	desktop::Desktop::Main() 	desktop/source/app/app.cxx:1679
    186 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    187 	MSVCP140_1.dll 	0x11ef
    188 	ucrtbase.dll 	0x20475
    189 	mergedlo.dll 	operator<<<char,std::char_traits<char> >(std::basic_ostream<char,std::char_traits<char> > &,FontMetric const &) 	include/vcl/metric.hxx:107
    190 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    191 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    192 	mergedlo.dll 	InitVCL() 	vcl/source/app/svmain.cxx:371
    193 	mergedlo.dll 	desktop::Desktop::Main() 	desktop/source/app/app.cxx:1304
    194 	mergedlo.dll 	ImplSVMainRun() 	vcl/source/app/svmain.cxx:234
    195 	mergedlo.dll 	soffice_main 	desktop/source/app/sofficemain.cxx:122
    196 	ntdll.dll 	0x53850
    197 	ucrtbase.dll 	0x20400
    198 	mergedlo.dll 	static `desktop::CallbackFlushHandler::CallbackData::CallbackData'::`1'::dtor$0()
    199 	mergedlo.dll 	soffice_main 	desktop/source/app/sofficemain.cxx:59
    200 	soffice.bin 	main 	desktop/source/app/main.c:49
    201 	soffice.bin 	static int __scrt_common_main_seh() 	D:/a/_work/1/s/src/vctools/crt/vcstartup/src/startup/exe_common.inl:288
    202 	soffice.bin 	mainCRTStartup 	D:/a/_work/1/s/src/vctools/crt/vcstartup/src/startup/exe_main.cpp:16
    203 	kernel32.dll 	0x1259d
    204 	ntdll.dll 	0x5af78

[1] https://crashreport.libreoffice.org/stats/crash_details/6812315d-e79b-46ce-893d-688d6908c41c
[2] https://gerrit.libreoffice.org/c/core/+/203572/comment/95fcd0be_db5a3d02/

Change-Id: Ia30eecd2667d15220b9f7824faea5adc04c94e93
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210137
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-08-27 23:36:19 +02:00
Michael Weghorn 8bf40d62b6 Move QueryDialog to svtools
Move QueryDialog from cui to a public svtools header.
This is in preparation of using the class directly
and dropping the AbstractQueryDialog abstraction
altogether.

The dialog can e.g. be triggered like this:

* start Writer
* Ctrl+Shift+S for "Save As"
* select "Text (.txt)" for the file type
* press OK

(Resetting the profile ensures the dialog gets shown
in case the "Don't show again" checkbox has been ticked
previously.)

Change-Id: I57bdade32c21c7ab40c5a4c90bd86e8dea5d2fad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210136
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-08-27 23:36:10 +02:00
Mike Kaganski 1dc3b23162 cool#16078: OOXML round-trip of the clip polygon
A placeholder clipped to an outline carries it as custom geometry, which an
image shape has nowhere to keep, so the outline was dropped on load and the save
wrote a plain rectangle over it. Read it into GraphicClipPolyPolygon, and write
it back from there.

The two directions are not equally capable. Import reads paths of literal
coordinates: one driven by guides or formulas, and an arc, both need the
custom-shape machinery. A quadratic curve is read, converting exactly to the
cubic the model keeps. A path that states no w and h is not read either - such
coordinates are absolute EMU rather than a space to scale from, and no file
authored that way turned up to check the reading against. Export writes whatever
polygon the model holds, so that direction loses nothing - a geometry the import
gave up on was never stored. A curve that closes a contour states no end point
of its own, and the point the contour started from answers for it.

A path that states fill="none" states that it paints nothing, and PowerPoint
leaves it out of the clip: a picture clipped by two paths shows through the
plain one and not through the nofill one, while the same file with that one
attribute removed - or with stroke="0" in its place - shows through both. So
such a path is read past, while the shading variants and stroke="0" are not:
those say how an area is painted, not whether there is one.

Several paths become one polygon by area, not by concatenation: the contours of
one path are filled by the even-odd rule, so two of them overlapping leave a
hole, while paths are filled one after another and the shape covers what they
cover together. Concatenating them instead cut a hole wherever two paths
overlap, which the file does not describe and PowerPoint does not draw.

A shape's own custom geometry now replaces the one it inherits, the way a preset
geometry already did. Saving states the outline on the slide as well as on its
layout, so reading that back gave the slide placeholder its own geometry beside
the inherited one, and two geometries at once are not one this reads - the
placeholder came back unclipped while PowerPoint showed the same file correctly.

The outline reaches the drawing the commit before this one added, so a
placeholder read from a file shows what sits behind the parts it does not cover.
It survives a round-trip through ODF as well, where the property already travels
as coext:graphic-clip-poly, with nothing to carry until now.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I87bd21e68bcea648c8c9151b6af5439578f1c2cf
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9303
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 04bbb74a24bad4ae54f257b6b028f3fd48955272)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210123
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-27 21:14:55 +02:00
Andrea Gelmini ebbe637cc0 Fix typos in code and comments
Change-Id: Ib4330a7696cbee7c5cdd27ddc14f0741fab7e833
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210048
Tested-by: Jenkins
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-27 20:39:06 +02:00
Mike Kaganski be205bb214 cool#16078: ODF round-trip of the clip polygon
Carry the GraphicClipPolyPolygon UNO property on graphic-object
shapes through ODF save/reload as a new <coext:graphic-clip-poly>
child of <draw:frame> with the polygon serialised as svg:d (the
same SVG d-path encoding draw:path uses). A new XML_GRAPHIC_CLIP_POLY
token is added in lockstep across xmltoken.hxx, xmltoken.cxx, and
tokens.txt so the XMLTokenEnum and FastParser tables stay aligned.

The element is taken before the frame decides what its shape child is, and
applied when the frame ends: an empty presentation object has no draw:image for
the polygon to follow, so the polygon comes first and the shape it belongs on
does not exist until then. A placeholder saved to ODF came back unclipped
otherwise, which is the shape of file our own save writes.

It goes on the image the frame keeps, which is not always the last one it saw:
a frame with a replacement image holds several, and the ones that lose are
taken off the page and disposed.

Export goes through a new ImpExportGraphicClipPoly helper called
from ImpExportGraphicObjectShape alongside ImpExportSignatureLine
and ImpExportQRCode (under ODFSVER_EXTENDED). Import is handled
in SdXMLFrameShapeContext::createFastChildContext, which is where
<draw:frame> children land - the GraphicObjectShape sub-context is
nested inside that and never sees this sibling directly.

The element is added to the extended ODF schema next to
loext-signatureline and loext-qrcode, so a document carrying it
validates, and is listed in the Collabora ODF extensions notes.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: Ib9ae65c1b6f2d8fdb28ae086fd7e2be2f8a8ee24
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9191
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit b7a56041afda6b658b6b16bb51a5939295c40d75)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210122
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-27 17:00:20 +02:00
Andrea Gelmini 7dcc068124 Fix typos
Change-Id: I170af8cd8bcbc969631ee603f20efcf40b68e517
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210038
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-27 15:00:22 +02:00
Andrea Gelmini d7f3114f2b Fix typos
Change-Id: I4486dfccc2a375daaa1929fd7efd31f6e606525b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210071
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-08-27 13:59:07 +02:00
Mike Kaganski 9d36b250d9 cool#16078: add SdrGrafClipPolyPolygonItem
Introduce an SfxPoolItem in the SDR graphic attribute range that
carries a basegfx::B2DPolyPolygon clip outline on SdrGrafObj.
Allocate SDRATTR_GRAFCLIPPOLYPOLYGON between SDRATTR_GRAFCROP and
SDRATTR_GRAF_LAST (which shifts SDRATTR_3D_FIRST and the downstream
ids by one), register the pool default, and surface the value as the
"GraphicClipPolyPolygon" UNO property on the GraphicObjectShape
property map (covering both drawing.GraphicObjectShape and
presentation.GraphicObjectShape via SVXMAP_GRAPHICOBJECT) using the
css::drawing::PolyPolygonBezierCoords type. QueryValue/PutValue
do the round-trip through the existing basegfx helpers.

The new which-id is 1175. The trailing comments in svddef.hxx have
run 2 high since two XATTR items were dropped upstream, so the ones
added here say 1177 to stay consistent with the file.

No reader, writer or render path consumes the property yet; this
is infrastructure for upcoming custGeom round-trip work on empty
picture placeholders.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I17d98cabeb230c25b3de0da4eadd8338ed672ce1
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9190
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit be7f21fc7187bb87129eed4e8ed2f794faf6e757)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210036
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-26 21:09:05 +02:00
Mike Kaganski 47aa325014 tdf#166401: support custom placeholder prompt text
A slide layout is imported as a master page, and the shown text was only set
off a master, so an authored prompt was stored but never displayed or written
back; the export emitted Impress's own localized resource instead. Set it on
a master too, and accept the graphic kind in RestoreDefaultText, which keeps
the object an empty presentation object. Now that the two are
distinguishable, a placeholder that authored no prompt writes no text - its
text body keeps the properties a reader needs, and holds an empty paragraph.

A slide's own placeholder asks its master for that prompt before falling back
to the resource string, so the two no longer disagree about what is really
one placeholder.

This is what degraded in commit 73f1e76b1760d4e936aa22627623c922dcda964b
(cool#15754: Fix PPTX round-trip of empty picture placeholders, 2026-05-21):
mapping a layout <p:ph type="pic"/> to a real presentation service is what
made it reach that text reset, where the previous OutlinerShape mapping had
kept the authored prompt.

Implemented a TODO from commit 67ba6ccd5a
(tdf#140912, tdf#159219: fix import of graphic placeholder with custom
prompt, 2024-01-17). That commit deferred this because marking the object
empty after setting the text crashed the PPTX export; going through
RestoreDefaultText, which does exactly that, no longer does. Its other
objection stands: ODF stores no placeholder prompt, so a save to ODP still
drops it.

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I1b6f3e38cb24ac737d3de6258559090596817bad
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/9046
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit b41a780d139ec6ca5a5514db972ccf0e50058dfc)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210008
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-26 12:20:37 +02:00
Jesus Solis 39dcff4a99 tdf#156931 add import support for JPEG XL image format
Change-Id: I5b8c70d5739fdc91b0ca30fbaa780a5c7004741d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208352
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-08-26 11:43:32 +02:00
Andrea Gelmini eab8f10281 Fix typos
Change-Id: I79b522964693138d147a18fc5ac089617493ca69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209898
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-25 14:45:31 +02:00