1738 Commits
Author SHA1 Message Date
Caolán McNamara 3130f90ac9 crashtesting: ClickAction_VANISH missing from translations
seen on converting ooo103896-3.odp to pdf

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I5fb08b84fd0b84f704421e0af9a47a8ef34af957
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/7232
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit 7b41c8b3f607ff8e6bd3a0d6ec23ff481921b9aa)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208280
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-05 20:33:14 +02:00
Xisco Fauli 7003eb6fc6 fix headers
Change-Id: Ia2732cc041367bc113654bc424ea6621f3961e9f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211724
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-05 08:52:04 +02:00
Andrea Gelmini 6410690a38 Fix typos in code and comments.
Change-Id: I8f1419c60c8aec0784e6de685ba7f630ae99638d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210571
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-10 14:00:17 +02:00
Noel Grandin 1b276f9265 merge the outliner ParagraphData information into the regular EditTextObject
as part of the process of merging the Outliner code into the normal EditEngine paths.

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

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

Change-Id: I314673ee1b9efa14f178ac34a122995a554cd788
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10551
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 284bbe0af12b96844976f30bb35ade3a327ea76d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210503
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-05 00:09:20 +02:00
Mike Kaganski 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
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
Regina Henschel 28341a6927 Adds color interpolation in the HSL color model
The patch adds a color interpolation in the HSL color model to the
BColor tools and extends the 'Duplicate' dialog to include these new
color interpolations.

This patch also solves bug tdf#173142.

Change-Id: Ie7f15d65f20b6a8d116c2ac03a57540e6be25ae1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209366
Tested-by: Jenkins
Reviewed-by: Jonathan Clark <jonathan@libreoffice.org>
Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
2026-08-21 14:06:08 +02:00
Michael Weghorn 8cd22a5b7b [API CHANGE] Make css::drawing::framework::AnchorBindingMode sd-internal
The unpublished UNO enum
com::sun::star::drawing::framework::AnchorBindingMode
is only used inside sd and not relevant for any other UNO API.

Make it sd-internal, by removing the idl file and instead
defining an sd::framework::AnchorBindingMode enum class
in an sd-internal header.

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

Change-Id: I4b75cc829128633bc9382817fc574d55a09af8a4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209037
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-08-09 12:12:44 +02:00
Michael Weghorn a8e8ff5dcc sd: Move some presenter console helper classes to Library_sdui
These classes are only used by the presenter console
implementation in sd/source/console/, so move the
classes there as well, which implies moving them
from Library_sd to Library_sdui and no longer having
to have PresenterHelper.hxx in an sd-wide internal
include directory and there is no more need for
PresenterHelper to be SD_DLLPUBLIC.

In other words: Make clear these are implementation
details of the presenter console, and not used
elsewhere.

Change-Id: Ica2a516215344360f647c121b5f0942a67f54ea3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208744
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-07-28 23:36:25 +02:00
Caolán McNamara d3cf169ea1 bring external presentation sounds under link management
A presentation can reference sound files outside its own package, on a
slide transition, an animation, or a click action.

Linked graphics already come under link management, where the user
allows each external reference on its own.

Bring presentation sounds under the same link management. Each external
sound is registered as a link the user can allow through the link-update
infobar or "Edit, Links".

For the uno api move these sounds around as XSoundReference so their
allowed state can be moved with them. So that changes the property
from a string to an XInterface. Setter still accept a string, getter
returns the new XInterface, there's an acknowledged possibility of
incompatibility despite being technically api-change-passing

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: Ib7deea2f78cf5c5b9958e43adb8e6f46b1b31e80
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/6970
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 0aa870b7b5a6bda50bab50c7a0a41d28fdf4f6ab)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208430
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-07-22 14:01:37 +02:00
Xisco Fauli 00aebb5e88 loplugin:unusedmethods
Change-Id: I5eec1b68efc285995db3b5825699c07fa006cb35
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207375
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-06-29 10:16:53 +02:00
Caolán McNamara 8d0cb8f2e9 remove the write-only second animation sound field
loplugin:unusedfields already lists it as only used in the constructor.
Drop it, and note in its place that the second effect's sound URL really
lives in the shape's bookmark string, not in a sound field of its own.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I6ba402fd6e8052d6533f396d746da735abbf27bd
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4809
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 9d96470a60ad0c783fd3836bfc7f22ea91c5c24a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207282
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-25 15:36:57 +02:00
Mike Kaganski db79242098 svx, sd: add threaded fields to Draw annotation model
Extend sdr::annotation::Annotation and AnnotationData with m_Threaded,
m_Resolved, and m_ParentId so a Draw annotation can carry a reply/resolve
relationship. The three fields are propagated by toData / fromData and
by sd::Annotation::clone; when IsThreaded() is true they are emitted
from Annotation::ToJSON and SdXImpressDocument::getPostIts under the
same keys (threaded, resolved, parentId) that ScModelObj::getPostIts
already uses for Calc.

The fields will be used by the PDF filter (follow-up commits) and left
at their defaults elsewhere; ODP, PPTX and ODF exporters are unchanged
and continue to ignore them. Support for [MS-PPTX] extensions [1] for
comments that introduce state and replies is not in the scope of this
patch series.

[1] https://learn.microsoft.com/en-us/openspecs/office_standards/ms-pptx/161bc2c9-98fc-46b7-852b-ba7ee77e2e54

Signed-off-by: Mike Kaganski <mike.kaganski@collabora.com>
Change-Id: I49594e1e4698bfd541f4c5041362a52b675683fd
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1454
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit bbde910405829527c92c406a82f75743bc4416c2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207199
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-06-23 17:16:44 +02:00
Mohit Marathe bde6437f72 sd: add .uno:RemoveSlideSectionsAndSlides
Executing this command would iteratively delete all the slides in the
section in reverse order via XDrawPages::remove. The deletion of slide
is handled by SlideSectionManager::OnSlideRemoved, which deletes the
section when all of its slides are removed.

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: Idacb703f67695751ace2837bd03ce9deb8abd238
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3256
Reviewed-by: Pranam Lashkari <lpranam@collabora.com>
Tested-by: Pranam Lashkari <lpranam@collabora.com>
(cherry picked from commit 6bc6c67557fe4c2a09d0260c97b6d4c561f55c9f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206632
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-06-23 14:11:27 +02:00
Justin Luth ca804630b3 tdf#135572 sd/sw: use correct measurement for page margin listbox
The program creates a 2cm margin
when chosing 'Normal 0.75in' from the page sidebar.

Well 2cm is 0.79in, so fix the wording to reflect reality.

In addition, for Draw, each margin is half of what the value showed.
Be consistent with Writer, and show the value
for only one margin.

make UITest_sw_sidebar \
    UITEST_TEST_NAME=tdf133189.tdf133189.test_tdf133189

Change-Id: Ice89d95464cd29e0bcad5af7a74f5db154fe9689
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207051
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
2026-06-21 02:33:25 +02:00
Noel Grandin dcbe928a4f simplify SdStyleFamily
it is very confusing to have (1) a pimpl that is sometimes there
and sometimes not and (2) to have the same fields in the pimpl
struct and also on the parent instqnce.

Change-Id: Ie647e4d1867d44373f31d3cf2fc75f9e1fdcf060
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/1310
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 1adc2ed48e8b8ef4fd14e8f6d597ead0d5c5accf)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206325
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-10 22:27:41 +02:00
Jan Holesovsky bc2da4e14c sd: Read paragraph emptiness from the outliner, not the shape's UNO text
In a dbgutil build (on macOS - but probably does not matter), type a word in a
slide's text box, select it, copy it, move the cursor past it, and paste.
The paste asserts:

  assert( IsUpdateLayout() && "Should not be used for Update=FALSE: GetTextHeight" );

The paste merges paragraphs, which reaches
EffectSequenceHelper::disposeTextRange through the ParagraphDeleted callback
(SdPage::onParagraphRemoving).  To decide which effect to drop it called
isParagraphTargetTextEmpty(), which reads the shape text through the UNO text
forwarder and so forces a text frame layout recompute
(NbcAdjustTextFrameWidthAndHeight, then GetTextHeight).  The paste runs with
the EditEngine layout updates suspended, hence the assert in
ImpEditEngine::GetTextHeight.

Decide the previous paragraph's emptiness in onParagraphRemoving, where the
editing outliner with the live text is at hand, and pass it down to
disposeTextRange.  This drops the UNO read and its layout side effect for
every case, animated or not.

Includes a unit test that executes the sequence described at the beginning;
without the fix, it fails with an assert.

Signed-off-by: Jan Holesovsky <kendy@collabora.com>
Change-Id: Id6ae3c8a121f036f87fa43ce134541376ff0b179
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3669
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 89a1a74dc95054698c1097b0aea0466ad6a6e092)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206213
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-09 10:53:57 +02:00
Miklos Vajna cebff7400f cool#15908 engine sd, SetHyperlink: ignore given text when there is a selection
Similar to commit 277ebe4cdc9ce386e9baedc687f67498b8c60cba (cool#15908
engine sw, SetHyperlink: ignore given text when there is a selection,
2026-06-02), but this one is for Impress/Draw.

Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: I2c320808d82cf9e417f2cdf59169082afaa8d3d1
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3724
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit 01fdf92bd12dd2d03b8c94f15145714d405d4e76)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206211
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-08 15:59:58 +02:00
Xisco Fauli b0e4238a46 svx: remove svx::theme::notifyLOK
The logic was relevant for Collabora Online
but it no longer uses this repo

Change-Id: I11755f26a3ed345eafcf7fe5aeaee850729227eb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206162
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-06-05 21:52:31 +02:00
Armin Le Grand (collabora) 82f3257285 Undo/Redo: Repair SetUndoComment
In commit 93aa742ba3 which is
20 years ago 'cl' did a big change to get to SfxUndoManager
which is a needed abstraction for the formally Svx-based
Undo/Redo stuff.
Unfortunately SdrModel::SetUndoComment was *not* supported
and this was expressed as just doing a

OSL_FAIL("svx::SdrModel::SetUndoComment(), method not supported with application undo manager!" );

in SdrModel::SetUndoComment when SfxUndoManager was used.
But SetUndoComment *is* used in nine cases in
svdraw/svdedtv2.cxx. All of these execute some action and
create Undos for it. All nine Undos were without any Undo
text since then - over 20 years...

I stumbled over that when adding needed Diagram stuff to
UnGroupMarked().

I fix this with this commit. Creating that fix showed me
why 'cl' intentionally did not support that, but just
abandoning functionality is not a good choice.

Signed-off-by: Armin Le Grand (collabora) <Armin.LeGrand@collabora.com>
Change-Id: Idde2fcecc85a9eee39b62d38ed7d71a8cfbd3288
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/2486
Reviewed-by: Armin Le Grand <armin.legrand@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 5adf090261d705123074a0fa1c46119b2bf44bf3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206022
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-06-05 12:42:59 +02:00
Michael Weghorn f26084217a weld: Move weld::Button to own header/Rename weld.hxx
In the past, weld.hxx used to contain the class
definitions for weld::Widget and all subclasses.

By now, weld::Widget and almost all subclasses have
been moved to separate headers, to make it easier
to keep the overview and to avoid having to
recompile ~all UI code when one class changes.

By now, only weld::Button is left in weld.hxx.
Rename the header to Button.hxx.
Drop weld.hxx includes and instead add Button.hxx
includes (or weld::Button forward declarations) where
weld::Button is used.
(Don't simply replace all weld.hxx includes with
Button.hxx ones, since many of them were for the
use of other widgets that have since been moved
to their own headers.)

Add further includes where needed now that the
(direct or transitive) includes of weld.hxx were removed.

Change-Id: I8ea6201446a418d5e38b46337059dcd517ee29d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205937
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-05 07:58:07 +02:00
Xisco Fauli 7579bac8e9 drop isLOKTablet
follow-up of
commit f436c1cd89
Author: Xisco Fauli <xiscofauli@libreoffice.org>
Date:   Fri May 29 10:07:20 2026 +0200

    drop isLOKMobilePhone

Change-Id: I0b7774357071ea25069655dad33b2f3e2c02b835
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205827
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-29 13:38:57 +02:00
Miklos Vajna 0f3bbf5345 cool#15821 engine sd: scale objects unconditionally when...
...copying slides between documents

Open both presentations bugdocs, right click on the preview of slide 1
in the source document, copy, right click on the preview of the last
slide in the target document, paste, nothing happens in product builds.

In debug builds, we hit an assert due to a non-async dialog:
coolforkit-ns: /home/vmiklos/git/collaboraonline/online/engine/vcl/source/window/dialog.cxx:947: bool Dialog::ImplStartExecute(bool): Assertion `!"A dialog without a notifier: make me async / properly set up"' failed.

Converting the appearing dialog to async is not trivial, because
sd::slidesorter::controller::Clipboard::PasteSlidesFromSystemClipboard()
first calls InsertFileAsPage() (part of that triggers the dialog) and
then later it also calls InsertBookmarkAsObject(), so a number of
callers would need an async conversion. Instead do what other
presentation software (e.g. PowerPoint does): when pasting slides in,
just scale the objects unconditionally.

The test uses the same trick as commit
3db35199e711da81032c40cf525eb9fb3e792851 (Fix Impress textbox background
changing on cross-document paste in engine and online., 2026-05-11) to
trigger a slide sorter paste.

Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: Ia410f57efbaf0a514ae2fc3fb2a645be76bb799d
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3077
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 350d2c9da46659781095361e0ded395102b9619f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205700
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-27 08:58:36 +02:00
Pranam Lashkari 5142c825f3 slide sections: implemented undo/redo
UndoSlideSection captures the sections vector before the mutation
and, on first Undo(), captures the post-mutation state for Redo —
matching the UndoAnimation lazy-snapshot pattern. Wired into
Add/Remove/Rename/MoveSection in both SlotManager and DrawViewShell;
Move uses BegUndo/EndUndo to group with MovePages()'s own undos so
the whole operation reverts atomically.

Change-Id: I755b2118511eb5e629980b3b644fe24c8edac9cf
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/1251
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1619
Reviewed-by: Pranam Lashkari <lpranam@collabora.com>
Tested-by: Pranam Lashkari <lpranam@collabora.com>
(cherry picked from commit b9fafb69b1259dcb8e63e8f8e5877a58291a2317)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205182
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-14 15:41:24 +02:00
Pranam Lashkari c3ccc3109b sd: SlideSectionManager cleanup - remove redundant SaveToDocument
The "SlideSections" UNO property is just a view onto our own
in-memory maSections (the getter calls GetSectionsAsPropertyValues,
the setter calls SetSectionsFromPropertyValues). Calling
setPropertyValue from SaveToDocument was therefore a roundtrip:
maSections -> PropertyValue -> maSections, with no actual
persistence. The data was already in its final place after each
mutation.

Remove SaveToDocument() and all its callers; mutations to
maSections are the final state. Also drop the includes that
were only needed by it: DrawDocShell.hxx, XPropertySet.hpp,
XPropertySetInfo.hpp, XModel.hpp, sal/log.hxx.

Change-Id: I2fda95a52ba067b69f4492b8abaec7e1eb145f7b
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/1232
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1618
Tested-by: Pranam Lashkari <lpranam@collabora.com>
Reviewed-by: Pranam Lashkari <lpranam@collabora.com>
(cherry picked from commit b43943b73d5b98b180eac2093bc0fe9c1f58192c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205171
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-14 00:27:49 +02:00
Pranam Lashkari a226c37e40 Impress: replace InteropGrabBag with native SlideSections UNO property
Add "SlideSections" document property on SdXImpressDocument and
migrate all section import/export paths from InteropGrabBag to
use it directly. SlideSectionManager is now the authoritative
model, accessible from any module via standard UNO property access.

Change-Id: I276cc968e3be9a5d3599e2d7e1c581e5b1d84c1c
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/1030
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1615
Tested-by: Pranam Lashkari <lpranam@collabora.com>
Reviewed-by: Pranam Lashkari <lpranam@collabora.com>
(cherry picked from commit 03ce4ec8b3d3752cbf5377a7f21f24affd73b9c4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205169
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-14 00:27:18 +02:00
Pranam Lashkari 746bdfb0b8 Impress: add section context menu commands
Add UI commands for managing slide sections in the slide panel:
- Add Section, Remove Section, Rename Section
- Move Section Up, Move Section Down

Change-Id: I27ad92667230ad5eab9a686505f475dd29ab02fd
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/896
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 78ae446cdfaa5496be2478b37b4e2047dab487fd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205168
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-14 00:27:09 +02:00
Pranam Lashkari d7cc529bd6 Impress: add SlideSectionManager for slide section model
Add SlideSectionManager as an in-memory model that bridges the
InteropGrabBag (used for PPTX/ODP round-trip) and the Impress UI.

Sections are stored as a sorted vector of SlideSection structs,
each holding a name, GUID, and the 0-based start index of the
first slide.

Change-Id: I23c109fd2c7e00e288c1e8793fa7a1d53290169b
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/893
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 9e585554af9824ef076ed5e41808d622863f96e9)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205052
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-12 08:33:25 +02:00
Julien Nabet 1f38dc2c69 Related tdf#140226: use StaticWhichCast in fupage.cxx + 2 hrc (sd+include/svx)
+ remove dynamic_cast<const SfxBoolItem*>

Change-Id: I252a901218bef56a3b9cd9234387bfb7d4e36871
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204364
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-04-27 08:50:35 +02:00
Noel Grandin 4b10710e09 loplugin:passstuffbyref
Change-Id: I559d246b25c99e5cb7a28ba94e04a2acedd3e720
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200943
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2026-03-04 19:22:19 +01:00
Noel Grandin 5505d3bc4d loplugin:constparams
Change-Id: I33c701be5a441c1121b797f1eb5a8bda6fc3f89b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200927
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
2026-03-04 11:29:39 +01:00
Swarnadeep Paul 83a8572a99 tdf#114441 sd: Use size_t for container links
Replaced platform-dependent sal_uLong with
size_t for proper container size tracking.

Change-Id: I58cdba8facfb5740c7540ac39908a6fca5c47cd5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200667
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-03-03 10:43:05 +01:00
Jim Raykowski 7dec55381d tdf#90242 Use correct name in toolbox navigation buttons tooltips
Makes 'Slide' or 'Page' be shown in the Navigator navigation toolbox
button tooltips depending whether the Navigator is being used for
Impress or Draw.

Change-Id: I4301e2661130b9ef2e4312e0b7b395fc3b3edb45
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199462
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
Tested-by: Jenkins
2026-02-17 10:13:51 +01:00
Gabor Kelemen dd619d0e8d Presenter Console: Drop unused PaneStyle ActiveBottomCalloutPaneStyle & HotSpot
Seems to be unused ever since its 2008 addition in
commit e48a6ceb3f

Drop the related image from icon themes as well.

Also drop the XHotSpot/YHotspot bitmap property, which is also unused now.

Last place "using" them in code was removed in 2025 with
commit b363e27529
"loplugin:unusedfields"

Change-Id: I44950026390f51aa4c498428041a4422d762af53
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198069
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
Tested-by: Jenkins
2026-02-04 23:28:27 +01:00
Gabor Kelemen d1d399ab50 Presenter Console: simplify Help string handling
No need to store these in the configuration

Change-Id: I1790f544e337854d1e921bc4fc98aa37952ad067
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197052
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
2026-01-18 17:49:35 +01:00
Gabor Kelemen c8cc15d483 Fix some non self contained headers in module sd sdext
Change-Id: Ib574b48a30baa4d7bd7609cf31063fe860703a8a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196635
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
2026-01-18 17:46:26 +01:00
Gabor Kelemen 808c3ace57 Simplify string access in Presenter Console
No need to store static UI strings in the registry

Change-Id: Ief7ab77a8e854a89a9f8b28a4b56dda13e8c8774
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197017
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
2026-01-18 14:39:20 +01:00
Gabor Kelemen 47fe1cce1b tdf#146619 Use more forward declarations in include/vcl/[h-p]*
Found after running bin/find-unneeded-includes --headersfwd include/vcl/[n-p]*

Change-Id: If6436f3ef8300693c3869c2521e2fa2aa8a4edc8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196397
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
2026-01-14 10:19:31 +01:00
Mohit Marathe 9f1c5f027d sd: allow dtor of SdDrawDocument to remove pages unconditionally
Fixes the exception:
0 sal::backtrace_get(unsigned int) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sal/osl/unx/backtraceapi.cxx:42
1 (anonymous namespace)::printStack(int) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sal/osl/unx/signal.cxx:289
2 (anonymous namespace)::callSystemHandler(int, siginfo_t*, void*) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sal/osl/unx/signal.cxx:330
3 (anonymous namespace)::signalHandlerFunction(int, siginfo_t*, void*) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sal/osl/unx/signal.cxx:427
4 __restore_rt in /lib64/libpthread.so.0
5 __GI_raise at :?
6 __GI_abort at :?
7 /lib64/libstdc++.so.6(+0x91f97) [0x7f4c69c91f97]
8 std::__debug::vector<SdrPageObj*, std::allocator<SdrPageObj*> >::operator[](unsigned long) at /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/debug/vector:442
9 SdDrawDocument::connectPagePreviews() at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sd/source/core/drawdoc2.cxx:1794
10 SdDrawDocument::updatePagePreviewsGrid(SdPage*) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sd/source/core/drawdoc2.cxx:1770
11 SdDrawDocument::RemovePage(unsigned short) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sd/source/core/drawdoc2.cxx:540
12 SdrModel::DeletePage(unsigned short) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/svx/source/svdraw/svdmodel.cxx:1224
13 SdDrawDocument::DeletePage(unsigned short) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sd/source/core/drawdoc2.cxx:494
14 SdrModel::ClearModel(bool) at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/svx/source/svdraw/svdmodel.cxx:608
15 ~SdDrawDocument at /home/collabora/jenkins/workspace/gerrit_linux_co-25.04_clang_dbgutil/sd/source/core/drawdoc.cxx:380

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: Ie878a6a14d94a43bef9f53f2795d8cf4b768b5a2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195717
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196820
Tested-by: Jenkins
2026-01-13 09:05:27 +01:00
Mohit Marathe e021c187c4 sd: refactor SdPage::SetCanvasPage
Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: Iec7dd09162a9a51de3bcb9c3126a365b26c0507a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195286
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196815
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Tested-by: Jenkins
2026-01-13 09:04:32 +01:00
Mohit Marathe dffadc386b sd: indicate page order using connectors in canvas page
The connectors are glued to the preview shapes.

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: I168208899b06e3c6d3b24f5e4055894310b12e22
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194923
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196812
Tested-by: Jenkins
2026-01-13 09:03:54 +01:00
Mohit Marathe d95feee32d sd: store "HasCanvasPage" boolean in settings.xml
and validate the incoming canvas page

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: I2a110a8cd674e8a6d5be61b9623f9373deaa6f2d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193243
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196805
Tested-by: Jenkins
2026-01-12 19:27:52 +01:00
Mohit Marathe 04873e4b3c sd: don't update the previews while re-ordering pages
Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: Ide0f7672076e8ed5eb7f9cdaee1278c869f51e8b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194025
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196803
Tested-by: Jenkins
2026-01-12 19:27:35 +01:00
Mohit Marathe 829544185d sd: remember canvas page zoom
store zoom for canvas page & non-canvas page, and trigger zoom change
when switching between them

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: I93310f09af3f2c2bbc87c4561ef5e0fc791d2ec3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193459
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196801
Tested-by: Jenkins
2026-01-12 19:27:18 +01:00
Mohit Marathe b162ae4be3 sd: add support for shuffling slides from canvas page
added .uno:ReshufflePages which when executed will re-order the pages
based on the position of their previews on the canvas page.

Sorting logic:
1. Sort the previews based on their y-center
2. Form a row if the y-centers are within a tolerance limit
3. Sort the row based on their x-center (also considering RTL locale)
4. Repeat for each rows

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: If654e0cc14686aed2ad6cd69f2dc81249924ee2c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192940
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196798
Tested-by: Jenkins
2026-01-12 19:25:26 +01:00
Mohit Marathe 958327b810 sd: make sure that canvas page remains as the last page
This commit restricts the following operations:
- duplicating canvas page
- moving canvas page up
- inserting a page after the canvas page
- including canvas page in the slideshow

Also, prevent deleting the only non-canvas page.

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: I8050dfc9836719f345e0f5349f25b62cd164344d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192769
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196797
Tested-by: Jenkins
2026-01-12 19:24:44 +01:00
Mohit Marathe be59f89eec sd: insert or remove the page preview from canvas page
when the corresponding page has been inserted or removed

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: I4f9309a77a960814a85f8a015e3719ee7a0623b4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192768
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196795
Tested-by: Jenkins
2026-01-12 19:14:09 +01:00
Mohit Marathe 81910d315d sd: populate page previews grid in canvas page
Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: I9058a857cad403b78c20e3f771e1531d7f641a38
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192767
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196794
Tested-by: Jenkins
2026-01-12 19:14:00 +01:00
Mohit Marathe 1a03df815c sd: add uno command for inserting a canvas page
Executing `.uno:InsertCanvasPage` will insert a page of size 5m x 5m at
the last page.

Signed-off-by: Mohit Marathe <mohit.marathe@collabora.com>
Change-Id: Ic6c9237e9e763de7f1e32d4d1a95c56c0e4ed5a1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192319
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
(cherry picked from commit 90d410298855a0e1c5d125685e80a0803809dc7c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196680
2026-01-08 06:53:23 +01:00