core.git: sd/source

2026-04-19 Thread Julien Nabet (via logerrit)
 sd/source/core/sdpage2.cxx  |2 +-
 sd/source/ui/docshell/docshel4.cxx  |4 ++--
 sd/source/ui/func/fuoaprms.cxx  |2 +-
 sd/source/ui/unoidl/UnoDocumentSettings.cxx |4 ++--
 sd/source/ui/unoidl/unopback.cxx|4 ++--
 sd/source/ui/view/drviews2.cxx  |2 +-
 sd/source/ui/view/drviews3.cxx  |4 ++--
 sd/source/ui/view/drviews4.cxx  |4 ++--
 8 files changed, 13 insertions(+), 13 deletions(-)

New commits:
commit 793fd70ad62306ace8048918f954515a3158270e
Author: Julien Nabet 
AuthorDate: Sun Apr 19 14:02:44 2026 +0200
Commit: Julien Nabet 
CommitDate: Sun Apr 19 16:41:28 2026 +0200

Related tdf#164685: Cleanup class SfxItemSetFixed (sd remnants)

Change-Id: I34403867da234aa5ff826bd860bab5ee2830c2af
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203929
Tested-by: Jenkins
Reviewed-by: Julien Nabet 

diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index 08194915d4a0..b2308b7fecf6 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -428,7 +428,7 @@ SfxStyleSheet* SdPage::GetTextStyleSheetForObject( 
SdrObject* pObj ) const
 SfxItemSet* SdPage::getOrCreateItems()
 {
 if( mpItems == nullptr )
-mpItems = std::make_unique>( getSdrModelFromSdrPage().GetItemPool());
+mpItems = 
std::make_unique(SfxItemSet::makeFixedSfxItemSet( getSdrModelFromSdrPage().GetItemPool()));
 
 return mpItems.get();
 }
diff --git a/sd/source/ui/docshell/docshel4.cxx 
b/sd/source/ui/docshell/docshel4.cxx
index 1e070280503a..62eb7d419a2b 100644
--- a/sd/source/ui/docshell/docshel4.cxx
+++ b/sd/source/ui/docshell/docshel4.cxx
@@ -103,10 +103,10 @@ SfxPrinter* DrawDocShell::GetPrinter(bool bCreate)
 if (bCreate && !mpPrinter)
 {
 // create ItemSet with special pool area
-auto pSet = std::make_unique(SfxItemSet::makeFixedSfxItemSet<
 SID_PRINTER_NOTFOUND_WARN,  
SID_PRINTER_NOTFOUND_WARN,
 SID_PRINTER_CHANGESTODOC,   
SID_PRINTER_CHANGESTODOC,
-ATTR_OPTIONS_PRINT, ATTR_OPTIONS_PRINT>>( 
GetPool() );
+ATTR_OPTIONS_PRINT, ATTR_OPTIONS_PRINT>( 
GetPool() ));
 // set PrintOptionsSet
 SdOptionsPrintItem 
aPrintItem(SdModule::get()->GetSdOptions(mpDoc->GetDocumentType()));
 SfxFlagItem aFlagItem( SID_PRINTER_CHANGESTODOC );
diff --git a/sd/source/ui/func/fuoaprms.cxx b/sd/source/ui/func/fuoaprms.cxx
index e34e9341749f..46da7a1ddcb6 100644
--- a/sd/source/ui/func/fuoaprms.cxx
+++ b/sd/source/ui/func/fuoaprms.cxx
@@ -335,7 +335,7 @@ void FuObjectAnimationParameters::DoExecute( SfxRequest& 
rReq )
 if(!pArgs)
 {
 // fill ItemSet for dialog
-std::shared_ptr aSet = 
std::make_shared>(mrDoc.GetPool());
+std::shared_ptr aSet = 
std::make_shared(SfxItemSet::makeFixedSfxItemSet(mrDoc.GetPool()));
 
 // fill the set
 if (nAnimationSet == ATTR_SET)
diff --git a/sd/source/ui/unoidl/UnoDocumentSettings.cxx 
b/sd/source/ui/unoidl/UnoDocumentSettings.cxx
index ff8cdd930e1a..9e35ee7d3e04 100644
--- a/sd/source/ui/unoidl/UnoDocumentSettings.cxx
+++ b/sd/source/ui/unoidl/UnoDocumentSettings.cxx
@@ -779,10 +779,10 @@ DocumentSettings::_setPropertyValues(const 
PropertyMapEntry** ppEntries,
 }
 else
 {
-pItemSet = std::make_unique(SfxItemSet::makeFixedSfxItemSet
 >(pDoc->GetPool());
+ATTR_OPTIONS_PRINT, 
ATTR_OPTIONS_PRINT>(pDoc->GetPool()));
 }
 
 pPrinter = SfxPrinter::Create ( aStream, 
std::move(pItemSet) );
diff --git a/sd/source/ui/unoidl/unopback.cxx b/sd/source/ui/unoidl/unopback.cxx
index 769582e82347..2091312ebd98 100644
--- a/sd/source/ui/unoidl/unopback.cxx
+++ b/sd/source/ui/unoidl/unopback.cxx
@@ -54,7 +54,7 @@ SdUnoPageBackground::SdUnoPageBackground(
 if( pDoc )
 {
 StartListening( *pDoc );
-mpSet = std::make_unique>( pDoc->GetPool() );
+mpSet = 
std::make_unique(SfxItemSet::makeFixedSfxItemSet( pDoc->GetPool() ));
 
 if( pSet )
 mpSet->Put(*pSet);
@@ -93,7 +93,7 @@ void SdUnoPageBackground::fillItemSet( SdDrawDocument* pDoc, 
SfxItemSet& rSet )
 StartListening( *pDoc );
 mpDoc = pDoc;
 
-mpSet = std::make_unique>( *rSet.GetPool() );
+mpSet = 
std::make_unique(SfxItemSet::makeFixedSfxItemSet( *rSet.GetPool() ));
 
 if( maUsrAnys.AreThereOwnUsrAnys() )
 {
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index fd1612129224..9d53fc904dd8 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -1897,7 +1897,7 @@ vo

core.git: sd/source

2026-04-16 Thread Xisco Fauli (via logerrit)
 sd/source/ui/dlg/vectdlg.cxx |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 5f182564b13addc7f88e7369b4a050c220ea93f1
Author: Xisco Fauli 
AuthorDate: Thu Apr 16 14:02:09 2026 +0200
Commit: Xisco Fauli 
CommitDate: Thu Apr 16 17:10:45 2026 +0200

cid#1690675: Division or modulo by float zero

Change-Id: I1260947662233e486638de60149eda22077783ed
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203740
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 

diff --git a/sd/source/ui/dlg/vectdlg.cxx b/sd/source/ui/dlg/vectdlg.cxx
index ce9c8f0bf098..e46074dd3e0f 100644
--- a/sd/source/ui/dlg/vectdlg.cxx
+++ b/sd/source/ui/dlg/vectdlg.cxx
@@ -117,7 +117,8 @@ Bitmap SdVectorizeDlg::GetPreparedBitmap( Bitmap const & 
rBmp, double& rScale )
 if( aSizePix.Width() > VECTORIZE_MAX_EXTENT || aSizePix.Height() > 
VECTORIZE_MAX_EXTENT )
 {
 const ::tools::Rectangle aRect( GetRect( Size( VECTORIZE_MAX_EXTENT, 
VECTORIZE_MAX_EXTENT ), aSizePix ) );
-rScale = double(aSizePix.Width()) / aRect.GetWidth();
+if (aRect.GetWidth())
+rScale = double(aSizePix.Width()) / aRect.GetWidth();
 aNew.Scale( aRect.GetSize() );
 }
 else


core.git: sd/source

2026-04-09 Thread Michael Weghorn (via logerrit)
 sd/source/ui/dlg/BulletAndPositionDlg.cxx |8 
 1 file changed, 4 insertions(+), 4 deletions(-)

New commits:
commit 16b276d25fc0c06b7eaac20b6238cb4abd27d059
Author: Michael Weghorn 
AuthorDate: Thu Apr 9 12:04:38 2026 +0200
Commit: Michael Weghorn 
CommitDate: Fri Apr 10 06:33:33 2026 +0200

sd: Use SvxBulletAndPositionDlg member instead of TreeView param in hdl

Use SvxBulletAndPositionDlg::m_xLevelLB directly instead of
the weld::TreeView& param passed to the handler.
That is the weld::TreeView that the handler is connected to.

This prepares for switching the signal/handler param to
weld::ItemView& in an upcoming commit, in order to deduplicate
the weld::TreeView and weld::IconView implementations by moving
the logic to their shared weld::ItemView base class.

Change-Id: I689c6edb4dba442c3eb7616286ecd78e9b76f63a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203360
Reviewed-by: Michael Weghorn 
Tested-by: Jenkins

diff --git a/sd/source/ui/dlg/BulletAndPositionDlg.cxx 
b/sd/source/ui/dlg/BulletAndPositionDlg.cxx
index d5af9c6b6e78..8a95153a0d4a 100644
--- a/sd/source/ui/dlg/BulletAndPositionDlg.cxx
+++ b/sd/source/ui/dlg/BulletAndPositionDlg.cxx
@@ -691,18 +691,18 @@ void 
SvxBulletAndPositionDlg::CheckForStartValue_Impl(sal_uInt16 nNumberingType)
 SpinModifyHdl_Impl(*m_xStartED);
 }
 
-IMPL_LINK(SvxBulletAndPositionDlg, LevelHdl_Impl, weld::TreeView&, rBox, void)
+IMPL_LINK_NOARG(SvxBulletAndPositionDlg, LevelHdl_Impl, weld::TreeView&, void)
 {
 sal_uInt16 nSaveNumLvl = nActNumLvl;
 nActNumLvl = 0;
-auto aSelectedRows = rBox.get_selected_rows();
+auto aSelectedRows = m_xLevelLB->get_selected_rows();
 if (std::find(aSelectedRows.begin(), aSelectedRows.end(), 
pActNum->GetLevelCount())
 != aSelectedRows.end()
 && (aSelectedRows.size() == 1 || nSaveNumLvl != 0x))
 {
 nActNumLvl = 0x;
 for (sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++)
-rBox.unselect(i);
+m_xLevelLB->unselect(i);
 }
 else if (!aSelectedRows.empty())
 {
@@ -713,7 +713,7 @@ IMPL_LINK(SvxBulletAndPositionDlg, LevelHdl_Impl, 
weld::TreeView&, rBox, void)
 nActNumLvl |= nMask;
 nMask <<= 1;
 }
-rBox.unselect(pActNum->GetLevelCount());
+m_xLevelLB->unselect(pActNum->GetLevelCount());
 }
 else
 nActNumLvl = nSaveNumLvl;


core.git: sd/source

2026-04-08 Thread Michael Weghorn (via logerrit)
 sd/source/ui/animations/SlideTransitionPane.cxx |1 -
 1 file changed, 1 deletion(-)

New commits:
commit 3a73fa20b947c248626280c65054689d1c72d74e
Author: Michael Weghorn 
AuthorDate: Wed Apr 8 11:28:27 2026 +0200
Commit: Michael Weghorn 
CommitDate: Wed Apr 8 16:25:30 2026 +0200

sd: Don't try to set non-existent combobox entry as active

In SlideTransitionPane::updateVariants, the call to
weld::ComboBox::clear removes all entries, so there
is no more entry with an index of 0 afterwards.
Therefore, don't try to set that (non-existent) entry
as the active entry a few lines below.

Doing so would result in this critical warning when using
the gtk3 vcl plugin e.g. when starting Impress and trying
to assign the "Fade" transition for the current slide,
as also mentioned in tdf#171411 comment 9:

(soffice:451812): Gtk-CRITICAL **: 11:27:34.049: 
gtk_tree_view_scroll_to_cell: assertion 'tree_view->priv->tree != NULL' failed

Backtrace when starting with `G_DEBUG=fatal-criticals`:

Fatal exception: Signal 5
Stack:
#0 sal::backtrace_get(unsigned int) at 
/home/michi/development/git/libreoffice/sal/osl/unx/backtraceapi.cxx:42
#1 (anonymous namespace)::printStack(int) at 
/home/michi/development/git/libreoffice/sal/osl/unx/signal.cxx:289
#2 (anonymous namespace)::callSystemHandler(int, siginfo_t*, void*) at 
/home/michi/development/git/libreoffice/sal/osl/unx/signal.cxx:330
#3 (anonymous namespace)::signalHandlerFunction(int, siginfo_t*, void*) 
at /home/michi/development/git/libreoffice/sal/osl/unx/signal.cxx:427
#4 /usr/lib/x86_64-linux-gnu/libc.so.6(+0x40e30) [0x7fbf2de48e30]
#5 _g_log_abort at ./debian/build/deb/../../../glib/gmessages.c:455
#6 g_logv at ./debian/build/deb/../../../glib/gmessages.c:1313
#7 g_log at ./debian/build/deb/../../../glib/gmessages.c:1357
#8 (anonymous 
namespace)::GtkInstanceComboBox::tree_view_set_cursor(int) at 
/home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:0
#9 (anonymous 
namespace)::GtkInstanceComboBox::set_active_including_mru(int, bool) at 
/home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:21428
#10 (anonymous namespace)::GtkInstanceComboBox::do_set_active(int) at 
/home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:21944
#11 weld::ComboBox::set_active(int) at 
/home/michi/development/git/libreoffice/vcl/source/weld/ComboBox.cxx:25
#12 
sd::SlideTransitionPane::updateVariants(std::shared_ptr 
const&) at 
/home/michi/development/git/libreoffice/sd/source/ui/animations/SlideTransitionPane.cxx:1068
#13 sd::SlideTransitionPane::TransitionSelected(weld::IconView&) at 
/home/michi/development/git/libreoffice/sd/source/ui/animations/SlideTransitionPane.cxx:1056
#14 sd::SlideTransitionPane::LinkStubTransitionSelected(void*, 
weld::IconView&) at 
/home/michi/development/git/libreoffice/sd/source/ui/animations/SlideTransitionPane.cxx:1052
#15 Link::Call(weld::IconView&) const at 
/home/michi/development/git/libreoffice/include/tools/link.hxx:105
#16 weld::IconView::signal_item_activated() at 
/home/michi/development/git/libreoffice/include/vcl/weld/IconView.hxx:40
#17 (anonymous 
namespace)::GtkInstanceIconView::signalItemActivated(_GtkIconView*, 
_GtkTreePath*, void*) at 
/home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:16372
#18 g_cclosure_marshal_VOID__BOXEDv at 
./debian/build/deb/../../../gobject/gmarshal.c:1689
#19 closure_invoke_notifiers at 
./debian/build/deb/../../../gobject/gclosure.c:326
#20 accumulate at ./debian/build/deb/../../../gobject/gsignal.c:3264
#21 g_signal_emit_valist at 
./debian/build/deb/../../../gobject/gsignal.c:3304 (discriminator 1)
#22 g_signal_emit at ./debian/build/deb/../../../gobject/gsignal.c:3626
#23 /usr/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x1df1ed) [0x7fbf1b3df1ed]
#24 /usr/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x97e87) [0x7fbf1b297e87]
#25 closure_invoke_notifiers at 
./debian/build/deb/../../../gobject/gclosure.c:326
#26 accumulate at ./debian/build/deb/../../../gobject/gsignal.c:3267
#27 g_signal_emit_valist at 
./debian/build/deb/../../../gobject/gsignal.c:3304 (discriminator 1)
#28 g_signal_emit at ./debian/build/deb/../../../gobject/gsignal.c:3626
#29 /usr/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x35d0cc) [0x7fbf1b55d0cc]
#30 /usr/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x20936e) [0x7fbf1b40936e]
#31 gtk_main_do_event in /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#32 /usr/lib/x86_64-linux-gnu/libgdk-3.so.0(+0x40989) [0x7fbf1bf30989]
#33 /usr/lib/x86_64-linux-gnu/libgdk-3.so.0(+0x75aa6) [0x7fbf1bf65aa6]
#34 g_main_dispatch at ./debian/build/deb/../../../glib/gmain.c:3595 
(discriminator 2)
#35 g_main_context_dispat

core.git: sd/source

2026-03-31 Thread Xisco Fauli (via logerrit)
 sd/source/ui/func/fupoor.cxx |   37 -
 1 file changed, 20 insertions(+), 17 deletions(-)

New commits:
commit 131efa9f7863dbe56d21488da9e2716b916c33b0
Author: Xisco Fauli 
AuthorDate: Mon Mar 30 15:50:14 2026 +0200
Commit: Xisco Fauli 
CommitDate: Tue Mar 31 15:58:22 2026 +0200

sd: rearrange assert

Based on 
https://gerrit.libreoffice.org/c/core/+/202972/comment/9edfa057_991d45da/

After
commit 107aff7382654109b614a24d933dc6301dac06d1
Author: Xisco Fauli 
Date:   Mon Mar 30 11:35:36 2026 +0200

sd: silence warning C6011: Dereferencing NULL pointer 'pObj'

Change-Id: I73828f216e69172d0990ef502c513c7035d1d2d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202991
Reviewed-by: Xisco Fauli 
Tested-by: Jenkins

diff --git a/sd/source/ui/func/fupoor.cxx b/sd/source/ui/func/fupoor.cxx
index 89ff775cc14e..4aafd5950495 100644
--- a/sd/source/ui/func/fupoor.cxx
+++ b/sd/source/ui/func/fupoor.cxx
@@ -795,28 +795,31 @@ bool FuPoor::KeyInput(const KeyEvent& rKEvt)
 pObj = pSubSelection;
 }
 
-// FIXME: MSVC analyzer complains about
-// warning C6011: Dereferencing NULL pointer 'pObj'
-// which is a false positive since DynCastSdrTextObj already 
checks pObj
-assert(pObj);
 // #i118485# allow TextInput for OLEs, too
-if( DynCastSdrTextObj( pObj ) !=  nullptr && 
pObj->HasTextEdit())
+if(DynCastSdrTextObj( pObj ) !=  nullptr)
 {
-// use common IsSimpleCharInput from the EditEngine.
-bool bPrintable(EditEngine::IsSimpleCharInput(rKEvt));
-
-if(bPrintable)
+// FIXME: MSVC analyzer complains about
+// warning C6011: Dereferencing NULL pointer 'pObj'
+// which is a false positive since DynCastSdrTextObj 
already checks pObj
+assert(pObj);
+if(pObj->HasTextEdit())
 {
-// try to activate textedit mode for the selected 
object
-SfxStringItem aInputString(SID_ATTR_CHAR, 
OUString(rKEvt.GetCharCode()));
+// use common IsSimpleCharInput from the EditEngine.
+bool bPrintable(EditEngine::IsSimpleCharInput(rKEvt));
 
-
mrViewShell.GetViewFrame()->GetDispatcher()->ExecuteList(
-SID_ATTR_CHAR,
-SfxCallMode::ASYNCHRON,
-{ &aInputString });
+if(bPrintable)
+{
+// try to activate textedit mode for the selected 
object
+SfxStringItem aInputString(SID_ATTR_CHAR, 
OUString(rKEvt.GetCharCode()));
 
-// consumed
-bReturn = true;
+
mrViewShell.GetViewFrame()->GetDispatcher()->ExecuteList(
+SID_ATTR_CHAR,
+SfxCallMode::ASYNCHRON,
+{ &aInputString });
+
+// consumed
+bReturn = true;
+}
 }
 }
 }


core.git: sd/source

2026-03-30 Thread Xisco Fauli (via logerrit)
 sd/source/ui/func/fupoor.cxx |4 
 1 file changed, 4 insertions(+)

New commits:
commit 107aff7382654109b614a24d933dc6301dac06d1
Author: Xisco Fauli 
AuthorDate: Mon Mar 30 11:35:36 2026 +0200
Commit: Xisco Fauli 
CommitDate: Mon Mar 30 14:40:53 2026 +0200

sd: silence warning C6011: Dereferencing NULL pointer 'pObj'

Change-Id: Iff351140dd3ccbe3374ffdd4ecf657e4428c9e72
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202972
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 

diff --git a/sd/source/ui/func/fupoor.cxx b/sd/source/ui/func/fupoor.cxx
index 202fb5ffc636..89ff775cc14e 100644
--- a/sd/source/ui/func/fupoor.cxx
+++ b/sd/source/ui/func/fupoor.cxx
@@ -795,6 +795,10 @@ bool FuPoor::KeyInput(const KeyEvent& rKEvt)
 pObj = pSubSelection;
 }
 
+// FIXME: MSVC analyzer complains about
+// warning C6011: Dereferencing NULL pointer 'pObj'
+// which is a false positive since DynCastSdrTextObj already 
checks pObj
+assert(pObj);
 // #i118485# allow TextInput for OLEs, too
 if( DynCastSdrTextObj( pObj ) !=  nullptr && 
pObj->HasTextEdit())
 {


core.git: sd/source sfx2/source slideshow/source

2026-03-29 Thread Andrea Gelmini (via logerrit)
 sd/source/ui/framework/configuration/ConfigurationUpdater.hxx |2 +-
 sd/source/ui/slidesorter/cache/SlsBitmapCache.hxx |2 +-
 sd/source/ui/slidesorter/cache/SlsQueueProcessor.hxx  |2 +-
 sfx2/source/dialog/partwnd.cxx|2 +-
 slideshow/source/engine/shapes/drawshape.cxx  |2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

New commits:
commit ad83edd7d64fc621235f237c22f90eef69b85e72
Author: Andrea Gelmini 
AuthorDate: Sat Mar 28 17:24:49 2026 +0100
Commit: Julien Nabet 
CommitDate: Sun Mar 29 09:48:53 2026 +0200

Fix typo "then"->"than"

Change-Id: If44203c2b37491ff3ba7b1542789b62d7a0afbca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202917
Reviewed-by: Julien Nabet 
Tested-by: Jenkins

diff --git a/sd/source/ui/framework/configuration/ConfigurationUpdater.hxx 
b/sd/source/ui/framework/configuration/ConfigurationUpdater.hxx
index 8f3330a9d1c3..a27b0fb18697 100644
--- a/sd/source/ui/framework/configuration/ConfigurationUpdater.hxx
+++ b/sd/source/ui/framework/configuration/ConfigurationUpdater.hxx
@@ -116,7 +116,7 @@ private:
 bool mbUpdateBeingProcessed;
 
 /** The ConfigurationController is locked when this count has a value
-larger then zero.  If the controller is locked then updates of the
+larger than zero.  If the controller is locked then updates of the
 current configuration are not made.
 */
 sal_Int32 mnLockCount;
diff --git a/sd/source/ui/slidesorter/cache/SlsBitmapCache.hxx 
b/sd/source/ui/slidesorter/cache/SlsBitmapCache.hxx
index b15398dd82fe..d0c75b15a649 100644
--- a/sd/source/ui/slidesorter/cache/SlsBitmapCache.hxx
+++ b/sd/source/ui/slidesorter/cache/SlsBitmapCache.hxx
@@ -48,7 +48,7 @@ public:
 /** The key for looking up preview bitmaps is a pointer to an SdrPage
 object.  The prior use of PageObjectViewObjectContact objects (which
 ultimately use them) turned out to be less suitable because their
-life time is shorter then that of the page objects.  Frequent
+life time is shorter than that of the page objects.  Frequent
 destruction and re-creation of the preview bitmaps was the result.
 */
 typedef const SdrPage* CacheKey;
diff --git a/sd/source/ui/slidesorter/cache/SlsQueueProcessor.hxx 
b/sd/source/ui/slidesorter/cache/SlsQueueProcessor.hxx
index be754719cda1..bf151fbae40c 100644
--- a/sd/source/ui/slidesorter/cache/SlsQueueProcessor.hxx
+++ b/sd/source/ui/slidesorter/cache/SlsQueueProcessor.hxx
@@ -54,7 +54,7 @@ public:
 @param nPriorityClass
 A priority class of 0 tells the processor that a high priority
 request is waiting in the queue.  The time to wait is thus
-shorter then that for a low priority request (denoted by a value
+shorter than that for a low priority request (denoted by a value
 of 1.)  When the timer is already running it is not modified.
 */
 void Start (int nPriorityClass);
diff --git a/sfx2/source/dialog/partwnd.cxx b/sfx2/source/dialog/partwnd.cxx
index 73fcb1ba9f75..efc3ce806c51 100644
--- a/sfx2/source/dialog/partwnd.cxx
+++ b/sfx2/source/dialog/partwnd.cxx
@@ -68,7 +68,7 @@ SfxPartChildWnd_Impl::~SfxPartChildWnd_Impl()
 {
 css::uno::Reference< css::frame::XFrame > xFrame = GetFrame();
 
-// If xFrame=NULL release pMgr! Because this window lives longer then the 
manager!
+// If xFrame=NULL release pMgr! Because this window lives longer than the 
manager!
 // In these case we got a xFrame->dispose() call from outside ... and has 
release our
 // frame reference in our own DisposingListener.
 // But don't do it, if xFrame already exist. Then dispose() must come from 
inside ...
diff --git a/slideshow/source/engine/shapes/drawshape.cxx 
b/slideshow/source/engine/shapes/drawshape.cxx
index 243e2a767322..2a31b1ac2575 100644
--- a/slideshow/source/engine/shapes/drawshape.cxx
+++ b/slideshow/source/engine/shapes/drawshape.cxx
@@ -463,7 +463,7 @@ namespace slideshow::internal
 
 tools::Long nFramesToLoad = aAnimation.Count();
 
-// if the Animation is bigger then 5 million pixels, we do not 
load the
+// if the Animation is bigger than 5 million pixels, we do not 
load the
 // whole animation now.
 if (nBitmapPixels * aAnimation.Count() > 500)
 {


core.git: sd/source

2026-03-26 Thread Aron Budea (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |2 ++
 1 file changed, 2 insertions(+)

New commits:
commit 59402f2fc815d812e130bf24ac1cd2d6aa645724
Author: Aron Budea 
AuthorDate: Thu Mar 26 13:14:38 2026 +1030
Commit: Aron Budea 
CommitDate: Thu Mar 26 15:01:20 2026 +0100

sd: don't export p:to element for p:animRot to PPTX

OOXML Validator complains:

{"Description":"The element has invalid child element
'http://schemas.openxmlformats.org/presentationml/2006/main:to'.",
"Path":{"Namespaces":{},"XPath":
"/p:sld[1]/p:timing[1]/p:tnLst[1]/p:par[1]/p:cTn[1]/p:childTnLst[1]/
p:seq[1]/p:cTn[1]/p:childTnLst[1]/p:par[1]/p:cTn[1]/p:childTnLst[1]/
p:par[1]/p:cTn[1]/p:childTnLst[1]/p:par[1]/p:cTn[1]/p:childTnLst[1]/
p:animRot[1]","PartUri":"/ppt/slides/slide1.xml"},
"Id":"Sch_InvalidElementContentExpectingComplex","ErrorType":"Schema"}

Affected: tdf99617-3.pptx
Change-Id: I5067f0da506abeb11ff58a2eb55619e4d277c933
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202696
Tested-by: Jenkins
Reviewed-by: Aron Budea 

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index a534ca715053..da6a0f5de0b9 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -716,6 +716,8 @@ void 
PPTXAnimationExport::WriteAnimationNodeAnimate(sal_Int32 nXmlNodeType)
 }
 
 mpFS->startElementNS(XML_p, nXmlNodeType, XML_by, pBy, XML_from, 
pFrom, XML_to, pTo);
+// p:to is unexpected child element for p:animRot
+bTo = false;
 }
 else if (nXmlNodeType == XML_animClr)
 {


core.git: sd/source

2026-03-25 Thread Liam Connors (via logerrit)
 sd/source/core/drawdoc2.cxx |8 
 1 file changed, 4 insertions(+), 4 deletions(-)

New commits:
commit 6808e0e7c238043acf983f93f1853f962e46c6bd
Author: Liam Connors 
AuthorDate: Sun Mar 22 15:54:20 2026 -0700
Commit: Ilmari Lauhakangas 
CommitDate: Wed Mar 25 15:19:08 2026 +0100

tdf#114441 replace sal_uLong in drawdoc2.cxx

Found acceptable change to do with type mismatch where nBottom / nRight
computed as tools::Long already

Change-Id: I89506f7ad32fa3735d9e2a2f756c9448d2729f2e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202391
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas 

diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx
index 46720b5fefd6..cf203643665f 100644
--- a/sd/source/core/drawdoc2.cxx
+++ b/sd/source/core/drawdoc2.cxx
@@ -682,10 +682,10 @@ void SdDrawDocument::CreateFirstPages( SdDrawDocument 
const * pRefDocument /* =
 aPageOffset -= pPrinter->PixelToLogic( Point() );
 ::tools::Long nOffset = !aPageOffset.X() && !aPageOffset.Y() ? 
0 : PRINT_OFFSET;
 
-sal_uLong nTop= aPageOffset.Y();
-sal_uLong nLeft   = aPageOffset.X();
-sal_uLong nBottom = std::max(::tools::Long(aDefSize.Height() - 
aOutSize.Height() - nTop + nOffset), ::tools::Long(0));
-sal_uLong nRight  = std::max(::tools::Long(aDefSize.Width() - 
aOutSize.Width() - nLeft + nOffset), ::tools::Long(0));
+tools::Long nTop= aPageOffset.Y();
+tools::Long nLeft   = aPageOffset.X();
+tools::Long nBottom = std::max(::tools::Long(aDefSize.Height() 
- aOutSize.Height() - nTop + nOffset), ::tools::Long(0));
+tools::Long nRight  = std::max(::tools::Long(aDefSize.Width() 
- aOutSize.Width() - nLeft + nOffset), ::tools::Long(0));
 
 pPage->SetBorder(nLeft, nTop, nRight, nBottom);
 }


core.git: sd/source

2026-03-25 Thread Liam Connors (via logerrit)
 sd/source/ui/view/Outliner.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 142e782065deb3dbcc73e8a32668eb27effb97f2
Author: Liam Connors 
AuthorDate: Sun Mar 22 16:22:01 2026 -0700
Commit: Ilmari Lauhakangas 
CommitDate: Wed Mar 25 15:16:21 2026 +0100

tdf#114441 replace sal_uLong with sal_Int32

nMatchCount assigned from StartSearchAndReplace(...) which returns 
sal_Int32.

Change-Id: Iab5dbd74eb1785206d58f08b7004721c1e3e028d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202392
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas 

diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx
index de496a215ef2..455d3569bfbb 100644
--- a/sd/source/ui/view/Outliner.cxx
+++ b/sd/source/ui/view/Outliner.cxx
@@ -868,7 +868,7 @@ bool 
SdOutliner::SearchAndReplaceOnce(std::vector* pSelecti
 auto& rVectorGraphicSearchContext = 
mpImpl->getVectorGraphicSearchContext();
 if (nullptr != dynamic_cast(pViewShell.get()))
 {
-sal_uLong nMatchCount = 0;
+sal_Int32 nMatchCount = 0;
 
 if (rVectorGraphicSearchContext.mbCurrentIsVectorGraphic)
 {


core.git: sd/source

2026-03-25 Thread Ethan Garcia (via logerrit)
 sd/source/ui/func/fuzoom.cxx |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit 12c1b96bdcfaa6699fa0041559120cd687a65143
Author: Ethan Garcia 
AuthorDate: Sun Mar 22 14:37:46 2026 -0700
Commit: Ilmari Lauhakangas 
CommitDate: Wed Mar 25 14:19:39 2026 +0100

tdf#114441 replace sal_uLong with tools::Long in fuzoom.cxx

Change-Id: I6120d3ac0d7ed58642c21382936a28db8eebafc0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202388
Reviewed-by: Ilmari Lauhakangas 
Tested-by: Jenkins

diff --git a/sd/source/ui/func/fuzoom.cxx b/sd/source/ui/func/fuzoom.cxx
index 884dc7289d74..95ed4ab1d40b 100644
--- a/sd/source/ui/func/fuzoom.cxx
+++ b/sd/source/ui/func/fuzoom.cxx
@@ -158,9 +158,9 @@ bool FuZoom::MouseButtonUp(const MouseEvent& rMEvt)
 {
 // Zoom
 Size aZoomSizePixel = mpWindow->LogicToPixel(aZoomRect).GetSize();
-sal_uLong nTol = 2 * mpView->GetDragThresholdPixels();
+tools::Long nTol = 2 * mpView->GetDragThresholdPixels();
 
-if ( ( aZoomSizePixel.Width() < static_cast<::tools::Long>(nTol) && 
aZoomSizePixel.Height() < static_cast<::tools::Long>(nTol) ) || rMEvt.IsMod1() )
+if ( ( aZoomSizePixel.Width() < nTol && aZoomSizePixel.Height() < nTol 
) || rMEvt.IsMod1() )
 {
 // click at place: double zoom factor
 Point aPos = mpWindow->PixelToLogic(aPosPix);


core.git: sd/source

2026-03-25 Thread Ethan Garcia (via logerrit)
 sd/source/ui/dlg/animobjs.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 5804aa11f5917a481f09246c311a8446648f2571
Author: Ethan Garcia 
AuthorDate: Mon Mar 23 19:56:03 2026 -0700
Commit: Ilmari Lauhakangas 
CommitDate: Wed Mar 25 14:16:10 2026 +0100

tdf#114441 replace sal_uLong with sal_Int64 in animobjs.cxx

Change-Id: Ie48c1669c0fa0b6195afc90154b03f85501793c6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202541
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas 

diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx
index 006ca386da69..2bacd0583dfc 100644
--- a/sd/source/ui/dlg/animobjs.cxx
+++ b/sd/source/ui/dlg/animobjs.cxx
@@ -375,7 +375,7 @@ IMPL_LINK_NOARG(AnimationWindow, ClickRbtHdl, 
weld::Toggleable&, void)
 }
 else if (m_xRbtBitmap->get_active())
 {
-sal_uLong n = m_xNumFldBitmap->get_value();
+sal_uInt64 n = m_xNumFldBitmap->get_value();
 if( n > 0 )
 {
 ::tools::Time const & rTime = m_FrameList[n - 1].second;


core.git: sd/source

2026-03-25 Thread Ethan Garcia (via logerrit)
 sd/source/ui/dlg/sdtreelb.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit b696025145be3c81ffa9ecd5c4a82cd77ef9775c
Author: Ethan Garcia 
AuthorDate: Mon Mar 23 19:44:13 2026 -0700
Commit: Ilmari Lauhakangas 
CommitDate: Wed Mar 25 14:13:04 2026 +0100

tdf#114441 replace sal_uLong with sal_uInt16 in sdtreelb.cxx

Change-Id: Idb7724f0e573f95406a3f6c1ff675cb7fd78
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202540
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas 

diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx
index 2dfc69ac1bc6..ebf201d30475 100644
--- a/sd/source/ui/dlg/sdtreelb.cxx
+++ b/sd/source/ui/dlg/sdtreelb.cxx
@@ -1208,7 +1208,7 @@ bool SdPageObjsTLV::PageBelongsToCurrentShow(const 
SdPage* pPage) const
 SdCustomShowList* pShowList = 
const_cast(m_pDoc)->GetCustomShowList();
 if (pShowList != nullptr)
 {
-sal_uLong nCurrentShowIndex = pShowList->GetCurPos();
+sal_uInt16 nCurrentShowIndex = pShowList->GetCurPos();
 pCustomShow = (*pShowList)[nCurrentShowIndex].get();
 }
 


core.git: sd/source svx/source

2026-03-23 Thread Andreas Heinisch (via logerrit)
 sd/source/core/drawdoc4.cxx |8 
 sd/source/ui/func/fuconrec.cxx  |4 ++--
 svx/source/sdr/properties/measureproperties.cxx |4 ++--
 3 files changed, 8 insertions(+), 8 deletions(-)

New commits:
commit ca4f6e7159c1b46c99365cd62028182d3b03a04c
Author: Andreas Heinisch 
AuthorDate: Tue Mar 24 00:15:51 2026 +0100
Commit: Andreas Heinisch 
CommitDate: Tue Mar 24 07:36:48 2026 +0100

tdf#126823 - Remove explicit arrow sizes for start/end widths

Change-Id: Ic0c30a2d580d652533dae053b63db7b9ca47be90
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202533
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch 

diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx
index 7daf20c169a6..c74f8b6931a3 100644
--- a/sd/source/core/drawdoc4.cxx
+++ b/sd/source/core/drawdoc4.cxx
@@ -194,8 +194,8 @@ void SdDrawDocument::CreateLayoutTemplates()
 rISet.Put(XLineEndItem(basegfx::B2DPolyPolygon()));
 // tdf#126823 - default arrow sizes for start/end widths
 // these should be aligned with values in FuConstructRectangle::SetLineEnds
-rISet.Put(XLineStartWidthItem(200));
-rISet.Put(XLineEndWidthItem(200));
+rISet.Put(XLineStartWidthItem());
+rISet.Put(XLineEndWidthItem());
 rISet.Put(XLineStartCenterItem());
 rISet.Put(XLineEndCenterItem());
 rISet.Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_BLOCK));
@@ -639,9 +639,9 @@ void SdDrawDocument::CreateLayoutTemplates()
 aArrow.setClosed(true);
 
 
pISet->Put(XLineStartItem(SvxResId(RID_SVXSTR_ARROW),::basegfx::B2DPolyPolygon(aArrow)));
-pISet->Put(XLineStartWidthItem(200));
+pISet->Put(XLineStartWidthItem());
 
pISet->Put(XLineEndItem(SvxResId(RID_SVXSTR_ARROW),::basegfx::B2DPolyPolygon(aArrow)));
-pISet->Put(XLineEndWidthItem(200));
+pISet->Put(XLineEndWidthItem());
 pISet->Put(SdrYesNoItem(SDRATTR_MEASURESHOWUNIT, true));
 }
 // Graphic > Lines > Dashed
diff --git a/sd/source/ui/func/fuconrec.cxx b/sd/source/ui/func/fuconrec.cxx
index 25ded7d74879..07fc94cace27 100644
--- a/sd/source/ui/func/fuconrec.cxx
+++ b/sd/source/ui/func/fuconrec.cxx
@@ -731,11 +731,11 @@ void FuConstructRectangle::SetLineEnds(SfxItemSet& rAttr, 
SdrObject const & rObj
 
 // tdf#126823 - retrieve default arrow sizes for start/end widths
 // generated in SdDrawDocument::CreateLayoutTemplates()
-::tools::Long nLineStartWidth = 200;
+::tools::Long nLineStartWidth = LINE_START_WIDTH_DEFAULT;
 if (aSet.GetItemState(XATTR_LINESTARTWIDTH) != SfxItemState::INVALID)
 nLineStartWidth = aSet.Get(XATTR_LINESTARTWIDTH).GetValue();
 
-::tools::Long nLineEndWidth = 200;
+::tools::Long nLineEndWidth = LINE_END_WIDTH_DEFAULT;
 if (aSet.GetItemState(XATTR_LINEENDWIDTH) != SfxItemState::INVALID)
 nLineEndWidth = aSet.Get(XATTR_LINEENDWIDTH).GetValue();
 
diff --git a/svx/source/sdr/properties/measureproperties.cxx 
b/svx/source/sdr/properties/measureproperties.cxx
index c0dcfb5dae90..dd235aab8fe4 100644
--- a/svx/source/sdr/properties/measureproperties.cxx
+++ b/svx/source/sdr/properties/measureproperties.cxx
@@ -117,9 +117,9 @@ namespace sdr::properties
 aNewPolygon.setClosed(true);
 
 moItemSet->Put(XLineStartItem(OUString(), 
basegfx::B2DPolyPolygon(aNewPolygon)));
-moItemSet->Put(XLineStartWidthItem(200));
+moItemSet->Put(XLineStartWidthItem());
 moItemSet->Put(XLineEndItem(OUString(), 
basegfx::B2DPolyPolygon(aNewPolygon)));
-moItemSet->Put(XLineEndWidthItem(200));
+moItemSet->Put(XLineEndWidthItem());
 moItemSet->Put(XLineStyleItem(css::drawing::LineStyle_SOLID));
 }
 } // end of namespace


core.git: sd/source

2026-03-22 Thread Ethan Garcia (via logerrit)
 sd/source/ui/func/fuinsfil.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 24c13e42149f308433c9e750e6143d587f7f2750
Author: Ethan Garcia 
AuthorDate: Sat Mar 21 13:17:44 2026 -0700
Commit: Ilmari Lauhakangas 
CommitDate: Sun Mar 22 16:55:28 2026 +0100

tdf#114441 replace sal_uLong with sal_Int32 in fuinsfil.cxx

Change-Id: I5951abdd84606f5a1460e74a5c3faa0cf5a1d7fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202332
Reviewed-by: Ilmari Lauhakangas 
Tested-by: Jenkins

diff --git a/sd/source/ui/func/fuinsfil.cxx b/sd/source/ui/func/fuinsfil.cxx
index 9ee4cdf26075..6a785eae6c02 100644
--- a/sd/source/ui/func/fuinsfil.cxx
+++ b/sd/source/ui/func/fuinsfil.cxx
@@ -473,7 +473,7 @@ void FuInsertFile::InsTextOrRTFinDrMode(SfxMedium* pMedium)
 while ( aOutliner.GetParagraphCount() > 1 )
 {
 Paragraph* pPara = aOutliner.GetParagraph( 0 );
-sal_uLong nLen = aOutliner.GetText( pPara ).getLength();
+sal_Int32 nLen = aOutliner.GetText( pPara ).getLength();
 aOutliner.QuickInsertLineBreak(ESelection(0, nLen, 1, 0));
 }
 }


core.git: sd/source

2026-03-22 Thread Ethan Garcia (via logerrit)
 sd/source/ui/dlg/vectdlg.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit ae47ca605e6bffdcf985a665c2169cd03b3685e4
Author: Ethan Garcia 
AuthorDate: Fri Mar 20 21:41:42 2026 -0700
Commit: Ilmari Lauhakangas 
CommitDate: Sun Mar 22 12:22:26 2026 +0100

tdf#114441 replace sal_uLong with sal_uInt32 in vectdlg.cxx

sal_uInt32 is used as nSumR, nSumG, nSumB accumulate RGB values
that will not overflow a 32-bit unsigned integer.

Change-Id: I5b8cd13e23cc689c3f066a144ad65bf4581f7c0d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202291
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas 

diff --git a/sd/source/ui/dlg/vectdlg.cxx b/sd/source/ui/dlg/vectdlg.cxx
index c79513194b12..e29ba41cdf43 100644
--- a/sd/source/ui/dlg/vectdlg.cxx
+++ b/sd/source/ui/dlg/vectdlg.cxx
@@ -208,7 +208,7 @@ void SdVectorizeDlg::Calculate( Bitmap const & rBmp, 
GDIMetaFile& rMtf )
 void SdVectorizeDlg::AddTile( BitmapReadAccess const * pRAcc, GDIMetaFile& 
rMtf,
   tools::Long nPosX, tools::Long nPosY, 
tools::Long nWidth, tools::Long nHeight )
 {
-sal_uLong   nSumR = 0, nSumG = 0, nSumB = 0;
+sal_uInt32   nSumR = 0, nSumG = 0, nSumB = 0;
 const tools::Long  nRight = nPosX + nWidth - 1;
 const tools::Long  nBottom = nPosY + nHeight - 1;
 const doublefMult = 1.0 / ( nWidth * nHeight );


core.git: sd/source

2026-03-16 Thread Caolán McNamara (via logerrit)
 sd/source/core/drawdoc2.cxx |5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit 2b67ec98a8136c15612d2cfa1396cb75d0d3baf3
Author: Caolán McNamara 
AuthorDate: Mon Mar 16 09:13:55 2026 +
Commit: Caolán McNamara 
CommitDate: Mon Mar 16 12:08:57 2026 +0100

cid#1680368 silence Overflowed constant

and

cid#1680365 Overflowed constant

Change-Id: Id59573858d032a85da70f50bead680fc2cc5c3bf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201801
Reviewed-by: Caolán McNamara 
Tested-by: Jenkins

diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx
index 3f1d556ba902..46720b5fefd6 100644
--- a/sd/source/core/drawdoc2.cxx
+++ b/sd/source/core/drawdoc2.cxx
@@ -1643,6 +1643,7 @@ sal_uInt16 SdDrawDocument::GetOrInsertCanvasPage()
 return 0x;
 
 // move the canvas page to the top
+assert(nCanvasPageIndex <= SAL_MAX_UINT16 / 2);
 sal_uInt16 nCanvasPageNum = 2 * nCanvasPageIndex + 1;
 MovePage(nCanvasPageNum, 1); // Canvas page
 MovePage(nCanvasPageNum + 1, 2); // Canvas notes page
@@ -1792,7 +1793,9 @@ void SdDrawDocument::connectPagePreviews()
 {
 SdrPageObj* pPageObj = static_cast(pObj);
 SdPage* pPage = 
static_cast(pPageObj->GetReferencedPage());
-sal_uInt16 nIndex = (pPage->GetPageNum() - 1) / 2 - 1; // without 
canvas page
+sal_uInt16 nPageNum = pPage->GetPageNum();
+assert(nPageNum >= 3 && nPageNum % 2 == 1);
+sal_uInt16 nIndex = (nPageNum - 1) / 2 - 1; // without canvas page
 aPageOrder[nIndex] = pPageObj;
 }
 }


core.git: sd/source

2026-03-11 Thread Marco Cecchetti (via logerrit)
 sd/source/filter/eppt/pptx-epptooxml.cxx |   37 ---
 1 file changed, 1 insertion(+), 36 deletions(-)

New commits:
commit e246bb2bd36517d62ffa52a8b265e3257f4946d1
Author: Marco Cecchetti 
AuthorDate: Sun Feb 8 20:58:29 2026 +0100
Commit: Marco Cecchetti 
CommitDate: Wed Mar 11 16:48:37 2026 +0100

fix pptx font embedding issues

- file size too big since Noto CJK included even if not used
- PowerPoint warning on opening document: not possible to install Noto
CJK

Change-Id: I0459d0acc00c49a9cb1bb98b24bd8911d9fde92b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201065
Reviewed-by: Tomaž Vajngerl 
Tested-by: Jenkins CollaboraOffice 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201441
Reviewed-by: Marco Cecchetti 
(cherry picked from commit eccdeb6c78c8d6a1f7aec345c4d0a2825c3fd18c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201466
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx 
b/sd/source/filter/eppt/pptx-epptooxml.cxx
index 7f2375951e5e..7bac79eb8b82 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -609,26 +609,6 @@ private:
 std::vector aSections;
 rEditText.GetAllSections(aSections);
 
-{
-SfxStyleSheet* pStyleSheet = 
pTextObject->getSdrPageFromSdrObject()->GetTextStyleSheetForObject(pTextObject);
-if (pStyleSheet)
-{
-const SfxItemSet& rItemSet = pStyleSheet->GetItemSet();
-if (const SvxFontItem* pItem = 
rItemSet.GetItemIfSet(EE_CHAR_FONTINFO, false))
-{
-addFontItem(pItem);
-}
-if (const SvxFontItem* pItem = 
rItemSet.GetItemIfSet(EE_CHAR_FONTINFO_CJK, false))
-{
-addFontItem(pItem);
-}
-if (const SvxFontItem* pItem = 
rItemSet.GetItemIfSet(EE_CHAR_FONTINFO_CTL, false))
-{
-addFontItem(pItem);
-}
-}
-}
-
 for (editeng::Section const& rSection : aSections)
 {
 if (SvxFontItem const* pFontItem = getFontItem(rSection, 
EE_CHAR_FONTINFO); pFontItem && mbEmbedLatinScript)
@@ -658,23 +638,8 @@ protected:
 void handleSdrObject(SdrObject* pObject) override
 {
 SdrTextObj* pTextShape = DynCastSdrTextObj(pObject);
-if (pTextShape)
+if (pTextShape && !pTextShape->IsEmptyPresObj())
 {
-auto& rItemSet = pTextShape->GetMergedItemSet();
-
-if (SvxFontItem const* pFontItem = 
rItemSet.GetItemIfSet(EE_CHAR_FONTINFO, true); pFontItem && mbEmbedLatinScript)
-{
-addFontItem(pFontItem);
-}
-if (SvxFontItem const* pFontItem = 
rItemSet.GetItemIfSet(EE_CHAR_FONTINFO_CJK, true); pFontItem && 
mbEmbedAsianScript)
-{
-addFontItem(pFontItem);
-}
-if (SvxFontItem const* pFontItem = 
rItemSet.GetItemIfSet(EE_CHAR_FONTINFO_CTL, true); pFontItem && 
mbEmbedComplexScript)
-{
-addFontItem(pFontItem);
-}
-
 traverseEditEng(pTextShape);
 }
 }


core.git: sd/source

2026-03-09 Thread Chris (via logerrit)
 sd/source/ui/func/futext.cxx |5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit d37154decd50e8116de8f596fc22fe98f01a3045
Author: Chris 
AuthorDate: Sat Mar 7 20:33:35 2026 -0600
Commit: Samuel Mehrbrodt 
CommitDate: Mon Mar 9 09:04:25 2026 +0100

tdf#98856: sd: preserve empty text frame when dragging it

When a text box is drawn and immediately dragged without typing,
FuText::MouseButtonDown called SdrEndTextEdit() without 
bDontDeleteReally=true
in the drag branch, causing the empty new frame to be silently deleted 
before
BegDragObj could move it.

Pass bDontDeleteReally=true so the frame survives for the subsequent drag.

Change-Id: Ifdaed0b4111973d57461927b52302773dde1470c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201201
Reviewed-by: Samuel Mehrbrodt 
Tested-by: Jenkins

diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx
index 420cb7c0bfbb..f35d81b2daf8 100644
--- a/sd/source/ui/func/futext.cxx
+++ b/sd/source/ui/func/futext.cxx
@@ -403,7 +403,10 @@ bool FuText::MouseButtonDown(const MouseEvent& rMEvt)
 
 if( mpView->IsTextEdit() )
 {
-mpView->SdrEndTextEdit();
+// Pass bDontDeleteReally=true so that a 
newly-created,
+// still-empty text frame is preserved for the 
drag that
+// follows immediately below (BegDragObj).
+mpView->SdrEndTextEdit(/*bDontDeleteReally=*/true);
 bJustEndedEdit = true;
 
 if(aVEvt.mpHdl)


core.git: sd/source

2026-03-06 Thread Ilmari Lauhakangas (via logerrit)
 sd/source/ui/dlg/sdtreelb.cxx |   23 +--
 1 file changed, 13 insertions(+), 10 deletions(-)

New commits:
commit 0a51861e0e445c64848324303517e61f8677566c
Author: Ilmari Lauhakangas 
AuthorDate: Fri Mar 6 16:57:06 2026 +0200
Commit: Ilmari Lauhakangas 
CommitDate: Sat Mar 7 07:15:27 2026 +0100

tdf#171173 Update Custom Animation deck after renaming shape via

the Navigator

Change-Id: Ife175cc4ab97af65d6a98e987192498bc23a49a1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201135
Reviewed-by: Jim Raykowski 
Reviewed-by: Ilmari Lauhakangas 
Tested-by: Jenkins

diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx
index 2219b375f3d9..2dfc69ac1bc6 100644
--- a/sd/source/ui/dlg/sdtreelb.cxx
+++ b/sd/source/ui/dlg/sdtreelb.cxx
@@ -824,23 +824,26 @@ IMPL_LINK(SdPageObjsTLV, EditedEntryHdl, const 
IterString&, rIterString, bool)
 
 // set the new name
 const auto aEntryId = m_xTreeView->get_id(rIterString.first);
-if (aEntryId.toInt64() == 1)
+if (::sd::DrawDocShell* pDocShell = m_pDoc->GetDocSh())
 {
-// page name
-if (::sd::DrawDocShell* pDocShell = m_pDoc->GetDocSh())
+if (::sd::ViewShell* pViewShell = GetViewShellForDocShell(*pDocShell))
 {
-if (::sd::ViewShell* pViewShell = 
GetViewShellForDocShell(*pDocShell))
+SdPage* pPage = pViewShell->GetActualPage();
+if (aEntryId.toInt64() == 1)
 {
-SdPage* pPage = pViewShell->GetActualPage();
+// page name
 pPage->SetName(rIterString.second);
 }
+else if (SdrObject* pCursorEntryObject = 
weld::fromId(aEntryId))
+{
+// object name
+pCursorEntryObject->SetName(rIterString.second);
+pPage->notifyObjectRenamed(pCursorEntryObject);
+}
 }
 }
-else if (SdrObject* pCursorEntryObject = 
weld::fromId(aEntryId))
-{
-// object name
-pCursorEntryObject->SetName(rIterString.second);
-}
+
+
 
 return true;
 }


core.git: sd/source

2026-03-05 Thread Michael Weghorn (via logerrit)
 sd/source/ui/accessibility/AccessibleSlideSorterView.cxx |3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

New commits:
commit 1dcbdfaf5ccdf734d813138be116c8d5f9ef37f6
Author: Michael Weghorn 
AuthorDate: Wed Mar 4 15:25:46 2026 +0100
Commit: Michael Weghorn 
CommitDate: Thu Mar 5 11:15:06 2026 +0100

sd a11y: Don't report support for css.drawing.AccessibleSlideSorterView

In AccessibleSlideSorterView, no longer report support for a
service called "com.sun.star.drawing.AccessibleSlideSorterView".

Such a service isn't defined in any .idl file and reporting such
a service name isn't needed internally either.

Change-Id: I1314c5c218ffd4178961f71975fa2e5899d8522b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200953
Reviewed-by: Michael Weghorn 
Tested-by: Jenkins

diff --git a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx 
b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx
index 4da3304a4c18..33a868cf35ae 100644
--- a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx
+++ b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx
@@ -462,8 +462,7 @@ uno::Sequence< OUString> SAL_CALL
 ThrowIfDisposed ();
 
 return uno::Sequence {
-u"com.sun.star.accessibility.AccessibleContext"_ustr,
-u"com.sun.star.drawing.AccessibleSlideSorterView"_ustr
+u"com.sun.star.accessibility.AccessibleContext"_ustr
 };
 }
 


core.git: sd/source

2026-03-03 Thread Swarnadeep Paul (via logerrit)
 sd/source/ui/dlg/animobjs.cxx |8 
 sd/source/ui/inc/animobjs.hxx |2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

New commits:
commit 69054d064b315c8827ea7fc69d59ccf6f4d297c4
Author: Swarnadeep Paul 
AuthorDate: Sat Feb 28 11:54:19 2026 +0530
Commit: Michael Weghorn 
CommitDate: Wed Mar 4 07:17:39 2026 +0100

tdf#114441 sd: Use sal_Int64 for animation timers

Replaced platform-dependent sal_uLong with
sal_Int64 to safely handle time/tick calculations.

Change-Id: I453745b9584d2e5af7ef6517191d75a2e09ef320
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200663
Reviewed-by: Michael Weghorn 
Tested-by: Jenkins

diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx
index 8e07225c561e..530072faba7c 100644
--- a/sd/source/ui/dlg/animobjs.cxx
+++ b/sd/source/ui/dlg/animobjs.cxx
@@ -279,7 +279,7 @@ IMPL_LINK( AnimationWindow, ClickPlayHdl, weld::Button&, 
rButton, void )
 pProgress.reset(new SfxProgress( nullptr, u"Animator:"_ustr, nFullTime 
)); // "Animator:" here we should think about something smart
 }
 
-sal_uLong nTmpTime = 0;
+sal_uInt64 nTmpTime = 0;
 size_t i = 0;
 bool bCount = i < nCount;
 if (bCount)
@@ -300,7 +300,7 @@ IMPL_LINK( AnimationWindow, ClickPlayHdl, weld::Button&, 
rButton, void )
 ::tools::Time const & rTime = m_FrameList[i].second;
 
 m_xFormatter->SetTime( rTime );
-sal_uLong nTime = rTime.GetMSFromTime();
+sal_Int32 nTime = rTime.GetMSFromTime();
 
 WaitInEffect( nTime, nTmpTime, pProgress.get() );
 nTmpTime += nTime;
@@ -499,7 +499,7 @@ IMPL_LINK_NOARG(AnimationWindow, ModifyBitmapHdl, 
weld::SpinButton&, void)
 
 IMPL_LINK_NOARG(AnimationWindow, ModifyTimeHdl, weld::FormattedSpinButton&, 
void)
 {
-sal_uLong nPos = m_xNumFldBitmap->get_value() - 1;
+sal_Int64 nPos = m_xNumFldBitmap->get_value() - 1;
 
 ::tools::Time & rTime = m_FrameList[nPos].second;
 
@@ -617,7 +617,7 @@ void AnimationWindow::ResetAttrs()
 UpdateControl();
 }
 
-void AnimationWindow::WaitInEffect( sal_uLong nMilliSeconds, sal_uLong nTime,
+void AnimationWindow::WaitInEffect( sal_Int64 nMilliSeconds, sal_Int64 nTime,
 SfxProgress* pProgress ) const
 {
 sal_uInt64 aEnd = ::tools::Time::GetSystemTicks() + nMilliSeconds;
diff --git a/sd/source/ui/inc/animobjs.hxx b/sd/source/ui/inc/animobjs.hxx
index f38cc8531946..832bd7fe4981 100644
--- a/sd/source/ui/inc/animobjs.hxx
+++ b/sd/source/ui/inc/animobjs.hxx
@@ -140,7 +140,7 @@ private:
 
 voidUpdateControl(bool bDisableCtrls = false);
 voidResetAttrs();
-voidWaitInEffect( sal_uLong nMilliSeconds, sal_uLong nTime,
+voidWaitInEffect( sal_Int64 nMilliSeconds, sal_Int64 nTime,
 SfxProgress* pStbMgr ) const;
 FractionGetScale();
 };


core.git: sd/source

2026-03-03 Thread Swarnadeep Paul (via logerrit)
 sd/source/core/sdpage.cxx  |8 
 sd/source/ui/view/outlview.cxx |   32 
 sd/source/ui/view/sdview3.cxx  |2 +-
 sd/source/ui/view/sdwindow.cxx |   26 +-
 4 files changed, 34 insertions(+), 34 deletions(-)

New commits:
commit 351df84114abe96b30719c2a7676df8ce35377ed
Author: Swarnadeep Paul 
AuthorDate: Sat Feb 28 12:01:18 2026 +0530
Commit: Michael Weghorn 
CommitDate: Tue Mar 3 10:41:19 2026 +0100

tdf#114441 sd: Use tools::Long for UI geometry

- Replaced platform-dependent sal_uLong with
tools::Long for UI coordinates, scaling, and zoom factors.
- Used sal_uInt32 for height and weigth
- Used 16bit Integer for example in outlview.cxx
- Use size_t for counting and iterating

Change-Id: I1eab0a88b61a93715fec116e699a826e9e38dc74
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200665
Tested-by: Jenkins
Reviewed-by: Michael Weghorn 

diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 11f2298cc454..4f993d992c8f 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -2039,7 +2039,7 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const 
::tools::Rectangle& rN
 SfxItemSet& rSet = pTitleSheet->GetItemSet();
 
 const SvxFontHeightItem& rOldHgt = 
rSet.Get(EE_CHAR_FONTHEIGHT);
-sal_uLong nFontHeight = rOldHgt.GetHeight();
+sal_uInt32 nFontHeight = rOldHgt.GetHeight();
 nFontHeight = ::tools::Long(nFontHeight * 
static_cast(aFractY));
 rSet.Put(SvxFontHeightItem(nFontHeight, 100, 
EE_CHAR_FONTHEIGHT));
 
@@ -2077,7 +2077,7 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const 
::tools::Rectangle& rN
 SfxItemSet 
aTempSet(pOutlineSheet->GetItemSet());
 
 const SvxFontHeightItem& rOldHgt = 
aTempSet.Get(EE_CHAR_FONTHEIGHT);
-sal_uLong nFontHeight = 
rOldHgt.GetHeight();
+sal_uInt32 nFontHeight = 
rOldHgt.GetHeight();
 nFontHeight = ::tools::Long(nFontHeight * 
static_cast(aFractY));
 
aTempSet.Put(SvxFontHeightItem(nFontHeight, 100, EE_CHAR_FONTHEIGHT));
 
@@ -2128,8 +2128,8 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const 
::tools::Rectangle& rN
 
 if (pNotesSheet)
 {
-sal_uLong nHeight = 
pObj->GetLogicRect().GetSize().Height();
-sal_uLong nFontHeight = 
static_cast(nHeight * 0.0741);
+sal_uInt32 nHeight = 
pObj->GetLogicRect().GetSize().Height();
+sal_uInt32 nFontHeight = nHeight * 0.0741;
 SfxItemSet& rSet = pNotesSheet->GetItemSet();
 rSet.Put( SvxFontHeightItem(nFontHeight, 100, 
EE_CHAR_FONTHEIGHT ));
 rSet.Put( SvxFontHeightItem(nFontHeight, 100, 
EE_CHAR_FONTHEIGHT_CJK ));
diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index cb411fb7d535..1aa4214731ee 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -573,8 +573,8 @@ SdPage* OutlineView::InsertSlideForParagraph( Paragraph* 
pPara )
 
 mrOutliner.SetParaFlag( pPara, ParaFlag::ISPAGE );
 // how many titles are there before the new title paragraph?
-sal_uLong nExample = 0;// position of the "example" page
-sal_uLong nTarget  = 0;// position of insertion
+sal_uInt16 nExample = 0;// position of the "example" page
+sal_uInt16 nTarget  = 0;// position of insertion
 while(pPara)
 {
 pPara = GetPrevTitle(pPara);
@@ -611,13 +611,13 @@ SdPage* OutlineView::InsertSlideForParagraph( Paragraph* 
pPara )
 **/
 
 // this page is exemplary
-SdPage* pExample = mrDoc.GetSdPage(static_cast(nExample), 
PageKind::Standard);
+SdPage* pExample = mrDoc.GetSdPage(nExample, PageKind::Standard);
 rtl::Reference pPage = mrDoc.AllocSdPage(false);
 
 pPage->SetLayoutName(pExample->GetLayoutName());
 
 // insert (page)
-mrDoc.InsertPage(pPage.get(), static_cast(nTarget) * 2 + 1);
+mrDoc.InsertPage(pPage.get(), nTarget * 2 + 1);
 if( isRecordingUndo() )
 AddUndo(mrDoc.GetSdrUndoFactory().CreateUndoNewPage(*pPage));
 
@@ -648,7 +648,7 @@ SdPage* OutlineView::InsertSlideForParagraph( Paragraph* 
pPara )
 /**
 |* now the notes page
 \***

core.git: sd/source

2026-02-26 Thread Zeki Bildirici (via logerrit)
 sd/source/ui/animations/SlideTransitionPane.cxx |   30 
 1 file changed, 30 insertions(+)

New commits:
commit 507e1aeadf74cfa58ed30872a3bd858a96cbcb58
Author: Zeki Bildirici 
AuthorDate: Mon Feb 23 22:30:30 2026 +0300
Commit: Samuel Mehrbrodt 
CommitDate: Thu Feb 26 09:38:17 2026 +0100

tdf#67544 Embed transition sound when Link is unchecked

The Link checkbox in the sound file dialog was being ignored.
When the user selects a sound file with Link unchecked, we now
call avmedia::EmbedMedia() to copy the sound into the document
package, matching the behavior of Insert -> Audio or Video.

Change-Id: Id1c441ecd47c5fbc5bd285912fbf13a6c8346f1d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200083
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt 

diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx 
b/sd/source/ui/animations/SlideTransitionPane.cxx
index cb42a66e7a33..460581d44ad1 100644
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -54,6 +54,9 @@
 
 #include 
 
+#include 
+#include 
+
 using namespace ::com::sun::star;
 
 using ::com::sun::star::uno::Reference;
@@ -692,6 +695,24 @@ void SlideTransitionPane::openSoundFileDialog()
aFileDialog.Execute() == ERRCODE_NONE )
 {
 OUString aFile = aFileDialog.GetPath();
+bool bEmbedded = false;
+
+// tdf#67544: Embed the sound file if "Link" is not checked
+if (!aFileDialog.IsInsertAsLinkSelected())
+{
+SfxObjectShell* pShell = SfxObjectShell::Current();
+if (pShell)
+{
+OUString aEmbeddedURL;
+bool bSuccess = ::avmedia::EmbedMedia(pShell->GetModel(), 
aFile, aEmbeddedURL);
+if (bSuccess && !aEmbeddedURL.isEmpty())
+{
+aFile = aEmbeddedURL;
+bEmbedded = true;
+}
+}
+}
+
 std::vector::size_type nPos = 0;
 bValidSoundFile = lcl_findSoundInList( maSoundList, aFile, nPos );
 
@@ -699,6 +720,15 @@ void SlideTransitionPane::openSoundFileDialog()
 {
 bQuitLoop = true;
 }
+else if( bEmbedded )
+{
+// Embedded URL: add directly to sound list, skip gallery
+maSoundList.push_back( aFile );
+lcl_FillSoundListBox( maSoundList, *mxLB_SOUND );
+nPos = maSoundList.size() - 1;
+bValidSoundFile = true;
+bQuitLoop = true;
+}
 else // not in sound list
 {
 // try to insert into gallery


core.git: sd/source

2026-02-21 Thread Mike Kaganski (via logerrit)
 sd/source/ui/sidebar/LayoutMenu.cxx  |6 ++
 sd/source/ui/sidebar/LayoutMenu.hxx  |3 ++-
 sd/source/ui/sidebar/MasterPagesSelector.cxx |   12 
 sd/source/ui/sidebar/MasterPagesSelector.hxx |2 +-
 4 files changed, 9 insertions(+), 14 deletions(-)

New commits:
commit 6c2a89a6e298f0a6a3d41815c9549a9113907a27
Author: Mike Kaganski 
AuthorDate: Sat Feb 21 15:45:44 2026 +0500
Commit: Mike Kaganski 
CommitDate: Sat Feb 21 17:13:41 2026 +0100

fix VirtualDevice GDI handle leaks in IconView's set_image callers

Similar to commit e9392c0c86fcf373e00ede92f8c2c7efd233 (fix
VirtualDevice GDI handle leaks across IconView callers, 2026-02-21).

Change-Id: I170e0429f4393f819742824bc49a22674d31b257
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199926
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/sd/source/ui/sidebar/LayoutMenu.cxx 
b/sd/source/ui/sidebar/LayoutMenu.cxx
index d235943972c5..49a6d7e60ec8 100644
--- a/sd/source/ui/sidebar/LayoutMenu.cxx
+++ b/sd/source/ui/sidebar/LayoutMenu.cxx
@@ -396,7 +396,7 @@ SfxRequest LayoutMenu::CreateRequest (
 return aRequest;
 }
 
-VclPtr LayoutMenu::GetVirtualDevice(Image pImage)
+ScopedVclPtr LayoutMenu::GetVirtualDevice(Image pImage)
 {
 Bitmap aPreviewBitmap = pImage.GetBitmap();
 VclPtr pVDev = VclPtr::Create();
@@ -481,11 +481,9 @@ void LayoutMenu::Fill()
 OUString sLayoutName = SdResId(elem.mpStrResId);
 if (!mxLayoutIconView->get_id(id).isEmpty())
 {
-VclPtr pVDev = GetVirtualDevice(aImg);
-mxLayoutIconView->set_image(id, *pVDev);
+mxLayoutIconView->set_image(id, *GetVirtualDevice(aImg));
 mxLayoutIconView->set_id(id, sId);
 mxLayoutIconView->set_text(id, sLayoutName);
-pVDev.disposeAndClear();
 }
 else
 {
diff --git a/sd/source/ui/sidebar/LayoutMenu.hxx 
b/sd/source/ui/sidebar/LayoutMenu.hxx
index 2632350a8a30..34763fec2673 100644
--- a/sd/source/ui/sidebar/LayoutMenu.hxx
+++ b/sd/source/ui/sidebar/LayoutMenu.hxx
@@ -25,6 +25,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 
@@ -159,7 +160,7 @@ private:
 DECL_LINK(EventMultiplexerListener, ::sdtools::EventMultiplexerEvent&, 
void);
 DECL_LINK(MenuSelectAsyncHdl, void*, void);
 
-static VclPtr GetVirtualDevice(Image pPreview);
+static ScopedVclPtr GetVirtualDevice(Image pPreview);
 static Bitmap GetPreviewAsBitmap(const Image& rImage);
 void HandleMenuSelect(std::u16string_view rIdent);
 };
diff --git a/sd/source/ui/sidebar/MasterPagesSelector.cxx 
b/sd/source/ui/sidebar/MasterPagesSelector.cxx
index 685c128cc479..24725dd19c0b 100644
--- a/sd/source/ui/sidebar/MasterPagesSelector.cxx
+++ b/sd/source/ui/sidebar/MasterPagesSelector.cxx
@@ -368,8 +368,7 @@ void MasterPagesSelector::NotifyContainerChangeEvent (const 
MasterPageContainerC
 Image 
aPreview(mpContainer->GetPreviewForToken(rEvent.maChildToken));
 if (aPreview.GetSizePixel().Width() > 0)
 {
-VclPtr pVDev = GetVirtualDevice(aPreview);
-mxPreviewIconView->set_image(nIndex, *pVDev);
+mxPreviewIconView->set_image(nIndex, 
*GetVirtualDevice(aPreview));
 }
 }
 }
@@ -427,10 +426,8 @@ void MasterPagesSelector::SetItem (
 {
 if (!mxPreviewIconView->get_id(nIndex).isEmpty())
 {
-VclPtr pVDev = GetVirtualDevice(aPreview);
-mxPreviewIconView->set_image(nIndex, *pVDev);
+mxPreviewIconView->set_image(nIndex, 
*GetVirtualDevice(aPreview));
 mxPreviewIconView->set_id(nIndex, OUString::number(aToken));
-pVDev.disposeAndClear();
 }
 else
 {
@@ -503,7 +500,7 @@ void MasterPagesSelector::InvalidatePreview (const SdPage* 
pPage)
 }
 }
 
-VclPtr MasterPagesSelector::GetVirtualDevice(const Image& 
rImage)
+ScopedVclPtr MasterPagesSelector::GetVirtualDevice(const Image& 
rImage)
 {
 Bitmap aPreviewBitmap = rImage.GetBitmap();
 VclPtr pVDev = VclPtr::Create();
@@ -540,8 +537,7 @@ void MasterPagesSelector::UpdateAllPreviews()
 Image aPreview(mpContainer->GetPreviewForToken(aToken));
 if (aPreview.GetSizePixel().Width() > 0)
 {
-VclPtr pVDev = GetVirtualDevice(aPreview);
-mxPreviewIconView->set_image(aIndex, *pVDev);
+mxPreviewIconView->set_image(aIndex, *GetVirtualDevice(aPreview));
 }
 else if (mpContainer->GetPreviewState(aToken) == 
MasterPageContainer::PS_CREATABLE)
 {
diff --git a/sd/source/ui/sidebar/MasterPagesSelector.hxx 
b/sd/source/ui/sidebar/MasterPagesSelector.hxx
index 93162ddf9c63..31a2e30a96b6 100644
--- a/sd/sour

core.git: sd/source

2026-02-16 Thread Andrea Gelmini (via logerrit)
 sd/source/ui/docshell/docshell.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit aa011fdf34c34230da555c89a2a0da7f83a67865
Author: Andrea Gelmini 
AuthorDate: Mon Feb 16 18:01:52 2026 +0100
Commit: Julien Nabet 
CommitDate: Mon Feb 16 19:28:05 2026 +0100

Fix typo

Change-Id: I7ac16842f82251c3e58d8de57af930e6d9f86944
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199496
Tested-by: Jenkins
Reviewed-by: Simon Chenery 
Reviewed-by: Julien Nabet 

diff --git a/sd/source/ui/docshell/docshell.cxx 
b/sd/source/ui/docshell/docshell.cxx
index 505119d123b6..6254e9839d1c 100644
--- a/sd/source/ui/docshell/docshell.cxx
+++ b/sd/source/ui/docshell/docshell.cxx
@@ -321,7 +321,7 @@ void DrawDocShell::GetState(SfxItemSet &rSet)
 if(bImpress)
 {
 // tdf#170719 only bother with NotebookBar
-// stuff, if this is not the runing SlideShow
+// stuff, if this is not the running SlideShow
 
if(!sd::SlideShow::IsRunning(mpViewShell->GetViewShellBase()))
 bVisible = 
sfx2::SfxNotebookBar::StateMethod(mpViewShell->GetFrame()->GetBindings(),
  
u"modules/simpress/ui/");


core.git: sd/source

2026-02-15 Thread Armin Le Grand (via logerrit)
 sd/source/ui/docshell/docshell.cxx |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

New commits:
commit 15e954646486767238ee57136ab214e31aad31da
Author: Armin Le Grand 
AuthorDate: Mon Feb 16 05:20:24 2026 +0100
Commit: Samuel Mehrbrodt 
CommitDate: Mon Feb 16 08:17:15 2026 +0100

tdf#170719: don't show notebookbar on running slideshow

Change-Id: I934ee64b36075bc4c1d71a25027a2f46a5acb4e9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199438
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt 

diff --git a/sd/source/ui/docshell/docshell.cxx 
b/sd/source/ui/docshell/docshell.cxx
index 082e9e9de4a6..505119d123b6 100644
--- a/sd/source/ui/docshell/docshell.cxx
+++ b/sd/source/ui/docshell/docshell.cxx
@@ -50,6 +50,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -319,8 +320,11 @@ void DrawDocShell::GetState(SfxItemSet &rSet)
 bool bVisible = false;
 if(bImpress)
 {
-bVisible = 
sfx2::SfxNotebookBar::StateMethod(mpViewShell->GetFrame()->GetBindings(),
-  
u"modules/simpress/ui/");
+// tdf#170719 only bother with NotebookBar
+// stuff, if this is not the runing SlideShow
+
if(!sd::SlideShow::IsRunning(mpViewShell->GetViewShellBase()))
+bVisible = 
sfx2::SfxNotebookBar::StateMethod(mpViewShell->GetFrame()->GetBindings(),
+ 
u"modules/simpress/ui/");
 }
 else
 {


core.git: sd/source

2026-02-15 Thread Samuel Mehrbrodt (via logerrit)
 sd/source/ui/controller/ThemeColorsToolBoxControl.cxx |   18 +-
 sd/source/ui/controller/ThemeColorsToolBoxControl.hxx |2 ++
 sd/source/ui/view/drviews2.cxx|4 +++-
 3 files changed, 22 insertions(+), 2 deletions(-)

New commits:
commit f96cf5d2d3ccc25b6e47e75338af6bb3a8b19bf1
Author: Samuel Mehrbrodt 
AuthorDate: Mon Feb 9 10:23:38 2026 +0100
Commit: Samuel Mehrbrodt 
CommitDate: Mon Feb 16 07:19:04 2026 +0100

Update theme color toolbox control after adding a new theme

Change-Id: I3fd8f7d9accdaf1e21f992b782a7718ab7379c52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198962
Reviewed-by: Szymon Kłos 
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Samuel Mehrbrodt 
(cherry picked from commit 944567a9c1bfb311f2cd33a556029751a960663c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199014
Tested-by: Jenkins

diff --git a/sd/source/ui/controller/ThemeColorsToolBoxControl.cxx 
b/sd/source/ui/controller/ThemeColorsToolBoxControl.cxx
index 3ada0c5a7f75..4386ae8cf9a3 100644
--- a/sd/source/ui/controller/ThemeColorsToolBoxControl.cxx
+++ b/sd/source/ui/controller/ThemeColorsToolBoxControl.cxx
@@ -33,8 +33,22 @@ void SAL_CALL ThemeColorsToolBoxControl::dispose()
 }
 
 void SAL_CALL
-ThemeColorsToolBoxControl::statusChanged(const css::frame::FeatureStateEvent& 
/*rEvent*/)
+ThemeColorsToolBoxControl::initialize(const css::uno::Sequence& 
rArguments)
 {
+svt::ToolboxController::initialize(rArguments);
+
+// Register to listen for AddTheme command changes
+addStatusListener(".uno:AddTheme");
+}
+
+void SAL_CALL ThemeColorsToolBoxControl::statusChanged(const 
css::frame::FeatureStateEvent& rEvent)
+{
+SolarMutexGuard aSolarMutexGuard;
+
+if (m_xVclBox && rEvent.FeatureURL.Complete == ".uno:AddTheme")
+m_xVclBox->refreshThemeColors();
+
+svt::ToolboxController::statusChanged(rEvent);
 }
 
 css::uno::Reference
@@ -106,6 +120,8 @@ ThemeColorsPaneWrapper::~ThemeColorsPaneWrapper() { 
disposeOnce(); }
 
 void ThemeColorsPaneWrapper::SetOptimalSize() { 
SetSizePixel(GetOptimalSize()); }
 
+void ThemeColorsPaneWrapper::refreshThemeColors() { initColorSets(); }
+
 void ThemeColorsPaneWrapper::dispose()
 {
 mxIconViewThemeColors.reset();
diff --git a/sd/source/ui/controller/ThemeColorsToolBoxControl.hxx 
b/sd/source/ui/controller/ThemeColorsToolBoxControl.hxx
index 9e9b876da7d8..57465b894ef5 100644
--- a/sd/source/ui/controller/ThemeColorsToolBoxControl.hxx
+++ b/sd/source/ui/controller/ThemeColorsToolBoxControl.hxx
@@ -30,6 +30,7 @@ public:
 virtual ~ThemeColorsPaneWrapper() override;
 virtual void dispose() override;
 void SetOptimalSize();
+void refreshThemeColors();
 
 DECL_LINK(SelectionChangedHdl, weld::IconView&, void);
 
@@ -50,6 +51,7 @@ public:
 virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& 
rEvent) override;
 
 // XToolbarController
+virtual void SAL_CALL initialize(const css::uno::Sequence& 
rArguments) override;
 virtual css::uno::Reference
 SAL_CALL createItemWindow(const 
css::uno::Reference& rParent) override;
 
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index b9fbc62e1c2f..e8b1b7f64edc 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -4290,7 +4290,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
 // Open ThemeColorEditDialog to create/edit the new color set
 auto pSubDialog = 
std::make_shared(GetFrameWeld(), *pCurrentColorSet);
 
-weld::DialogController::runAsync(pSubDialog, 
[pSubDialog](sal_uInt32 nResult) {
+weld::DialogController::runAsync(pSubDialog, [pSubDialog, 
this](sal_uInt32 nResult) {
 if (nResult != RET_OK)
 return;
 
@@ -4299,6 +4299,8 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
 {
 // Add the new color set to the global collection
 svx::ColorSets::get().insert(aColorSet);
+// Invalidate to update the toolbar control
+GetViewFrame()->GetBindings().Invalidate(SID_ADD_THEME);
 }
 });
 


core.git: sd/source

2026-02-10 Thread Miklos Vajna (via logerrit)
 sd/source/ui/tools/SlideshowLayerRenderer.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 7096036e38958a493fef7708677721cb3243bca6
Author: Miklos Vajna 
AuthorDate: Mon Feb 9 09:05:55 2026 +0100
Commit: Miklos Vajna 
CommitDate: Tue Feb 10 15:08:23 2026 +0100

sd: fix crash in AnalyzeRenderingRedirector

gdb on the crashreport core dump:

#0  0x71590be5da30 in o3tl::cow_wrapper::operator-> (this=)
at include/o3tl/cow_wrapper.hxx:331
#1  OutlinerParaObject::Count (this=0x0) at 
editeng/source/outliner/outlobj.cxx:168
#2  0x7158fd9ccb0a in sd::(anonymous 
namespace)::AnalyzeRenderingRedirector::createRedirectedPrimitive2DSequence 
(this=0x7ffc29a67820, rOriginal=..., rDisplayInfo=...)
at sd/source/ui/tools/SlideshowLayerRenderer.cxx:550
#3  0x71590d4469ee in 
sdr::contact::ViewObjectContact::getPrimitive2DSequence 
(this=this@entry=0x560c9e40, rDisplayInfo=...)
at svx/source/sdr/contact/viewobjectcontact.cxx:477
#4  0x71590d447109 in 
sdr::contact::ViewObjectContact::getPrimitive2DSequenceHierarchy 
(this=0x560c9e40, rDisplayInfo=..., rVisitor=...)
at svx/source/sdr/contact/viewobjectcontact.cxx:551

I.e. it's possible that in
AnalyzeRenderingRedirector::createRedirectedPrimitive2DSequence(),
pTextObject is non-nullptr but pTextObject->GetOutlinerParaObject() is
nullptr, check for this.

Change-Id: I1013809f134115fbeb56a9962d71380aaee17b22
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199059
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins

diff --git a/sd/source/ui/tools/SlideshowLayerRenderer.cxx 
b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
index 7f025300dde0..8675630ced5f 100644
--- a/sd/source/ui/tools/SlideshowLayerRenderer.cxx
+++ b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
@@ -543,7 +543,7 @@ public:
 if (!aInfo.maParagraphs.empty()) // we need to render paragraphs
 {
 auto* pTextObject = dynamic_cast(pObject);
-if (pTextObject)
+if (pTextObject && pTextObject->GetOutlinerParaObject())
 {
 sal_Int32 nNumberOfParagraphs = 
pTextObject->GetOutlinerParaObject()->Count();
 


core.git: sd/source

2026-02-06 Thread Gabor Kelemen (via logerrit)
 sd/source/console/PresenterBitmapContainer.cxx |   17 -
 sd/source/console/PresenterBitmapContainer.hxx |3 +--
 2 files changed, 1 insertion(+), 19 deletions(-)

New commits:
commit 2acbedf268b82a4d84debaad574367ee7d981a39
Author: Gabor Kelemen 
AuthorDate: Tue Jan 20 09:57:40 2026 +0100
Commit: Gabor Kelemen 
CommitDate: Fri Feb 6 16:46:22 2026 +0100

Presenter console: Remove MaskFileName bitmap type

Seems to be unused ever since it was added in 2008
commit a0fe5db9655fb9f462520631b99e81734e88a51d

Change-Id: I709527132997087aae25eb7917f7a6a4523c763c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198071
Reviewed-by: Gabor Kelemen 
Tested-by: Jenkins

diff --git a/sd/source/console/PresenterBitmapContainer.cxx 
b/sd/source/console/PresenterBitmapContainer.cxx
index 175e7a5ed265..36c259efaa97 100644
--- a/sd/source/console/PresenterBitmapContainer.cxx
+++ b/sd/source/console/PresenterBitmapContainer.cxx
@@ -193,15 +193,6 @@ 
std::shared_ptr PresenterBitmapConta
 }
 catch (Exception&)
 {}
-if (PresenterConfigurationAccess::GetProperty(rxProperties, 
u"MaskFileName"_ustr) >>= sFileName)
-try
-{
-pBitmap->SetBitmap(
-BitmapDescriptor::Mask,
-sd::presenter::PresenterHelper::loadBitmap(sFileName, 
rxCanvas));
-}
-catch (Exception&)
-{}
 
 PresenterConfigurationAccess::GetProperty(rxProperties, u"XOffset"_ustr) 
>>= pBitmap->mnXOffset;
 PresenterConfigurationAccess::GetProperty(rxProperties, u"YOffset"_ustr) 
>>= pBitmap->mnYOffset;
@@ -266,7 +257,6 @@ 
PresenterBitmapContainer::BitmapDescriptor::BitmapDescriptor (
 mxNormalBitmap = rpDefault->mxNormalBitmap;
 mxMouseOverBitmap = rpDefault->mxMouseOverBitmap;
 mxDisabledBitmap = rpDefault->mxDisabledBitmap;
-mxMaskBitmap = rpDefault->mxMaskBitmap;
 }
 
 const css::uno::Reference&
@@ -295,9 +285,6 @@ css::uno::Reference const &
 return mxDisabledBitmap;
 else
 return mxNormalBitmap;
-
-case Mask:
-return mxMaskBitmap;
 }
 }
 
@@ -325,10 +312,6 @@ void PresenterBitmapContainer::BitmapDescriptor::SetBitmap 
(
 case Disabled:
 mxDisabledBitmap = rxBitmap;
 break;
-
-case Mask:
-mxMaskBitmap = rxBitmap;
-break;
 }
 }
 
diff --git a/sd/source/console/PresenterBitmapContainer.hxx 
b/sd/source/console/PresenterBitmapContainer.hxx
index f91f614a5f04..0d0532c02236 100644
--- a/sd/source/console/PresenterBitmapContainer.hxx
+++ b/sd/source/console/PresenterBitmapContainer.hxx
@@ -51,7 +51,7 @@ public:
 BitmapDescriptor();
 explicit BitmapDescriptor (const std::shared_ptr& 
rpDefault);
 
-enum Mode {Normal, MouseOver, Disabled, Mask};
+enum Mode {Normal, MouseOver, Disabled};
 const css::uno::Reference& GetNormalBitmap() 
const;
 css::uno::Reference const & GetBitmap(const 
Mode eMode) const;
 void SetBitmap (
@@ -71,7 +71,6 @@ public:
 css::uno::Reference mxNormalBitmap;
 css::uno::Reference mxMouseOverBitmap;
 css::uno::Reference mxDisabledBitmap;
-css::uno::Reference mxMaskBitmap;
 };
 
 /** Create a new bitmap container from a section of the configuration.


core.git: sd/source

2026-02-05 Thread Gabor Kelemen (via logerrit)
 sd/source/console/PresenterBitmapContainer.cxx |   20 
 sd/source/console/PresenterBitmapContainer.hxx |3 +--
 sd/source/console/PresenterButton.cxx  |4 ++--
 sd/source/console/PresenterToolBar.cxx |2 +-
 4 files changed, 4 insertions(+), 25 deletions(-)

New commits:
commit d01da6c315ba26c117ccb4ee93d306bcdf686eed
Author: Gabor Kelemen 
AuthorDate: Mon Jan 19 00:19:38 2026 +0100
Commit: Gabor Kelemen 
CommitDate: Thu Feb 5 17:34:47 2026 +0100

Presenter console: Remove ButtonDownFileName bitmap type

Seems to be unused ever since it was added in 2008
commit b56e182db90df654eb6f45c0b98c83dc27b4f4ca

Change-Id: I31b987ed85de973bfdbcc432df98621df9938e82
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198070
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen 

diff --git a/sd/source/console/PresenterBitmapContainer.cxx 
b/sd/source/console/PresenterBitmapContainer.cxx
index 8b406cd0d3c8..175e7a5ed265 100644
--- a/sd/source/console/PresenterBitmapContainer.cxx
+++ b/sd/source/console/PresenterBitmapContainer.cxx
@@ -184,15 +184,6 @@ 
std::shared_ptr PresenterBitmapConta
 }
 catch (Exception&)
 {}
-if (PresenterConfigurationAccess::GetProperty(rxProperties, 
u"ButtonDownFileName"_ustr) >>= sFileName)
-try
-{
-pBitmap->SetBitmap(
-BitmapDescriptor::ButtonDown,
-sd::presenter::PresenterHelper::loadBitmap(sFileName, 
rxCanvas));
-}
-catch (Exception&)
-{}
 if (PresenterConfigurationAccess::GetProperty(rxProperties, 
u"DisabledFileName"_ustr) >>= sFileName)
 try
 {
@@ -274,7 +265,6 @@ 
PresenterBitmapContainer::BitmapDescriptor::BitmapDescriptor (
 meVerticalTexturingMode = rpDefault->meVerticalTexturingMode;
 mxNormalBitmap = rpDefault->mxNormalBitmap;
 mxMouseOverBitmap = rpDefault->mxMouseOverBitmap;
-mxButtonDownBitmap = rpDefault->mxButtonDownBitmap;
 mxDisabledBitmap = rpDefault->mxDisabledBitmap;
 mxMaskBitmap = rpDefault->mxMaskBitmap;
 }
@@ -300,12 +290,6 @@ css::uno::Reference const &
 else
 return mxNormalBitmap;
 
-case ButtonDown:
-if (mxButtonDownBitmap.is())
-return mxButtonDownBitmap;
-else
-return mxNormalBitmap;
-
 case Disabled:
 if (mxDisabledBitmap.is())
 return mxDisabledBitmap;
@@ -338,10 +322,6 @@ void PresenterBitmapContainer::BitmapDescriptor::SetBitmap 
(
 mxMouseOverBitmap = rxBitmap;
 break;
 
-case ButtonDown:
-mxButtonDownBitmap = rxBitmap;
-break;
-
 case Disabled:
 mxDisabledBitmap = rxBitmap;
 break;
diff --git a/sd/source/console/PresenterBitmapContainer.hxx 
b/sd/source/console/PresenterBitmapContainer.hxx
index ee012b1690c0..f91f614a5f04 100644
--- a/sd/source/console/PresenterBitmapContainer.hxx
+++ b/sd/source/console/PresenterBitmapContainer.hxx
@@ -51,7 +51,7 @@ public:
 BitmapDescriptor();
 explicit BitmapDescriptor (const std::shared_ptr& 
rpDefault);
 
-enum Mode {Normal, MouseOver, ButtonDown, Disabled, Mask};
+enum Mode {Normal, MouseOver, Disabled, Mask};
 const css::uno::Reference& GetNormalBitmap() 
const;
 css::uno::Reference const & GetBitmap(const 
Mode eMode) const;
 void SetBitmap (
@@ -70,7 +70,6 @@ public:
 private:
 css::uno::Reference mxNormalBitmap;
 css::uno::Reference mxMouseOverBitmap;
-css::uno::Reference mxButtonDownBitmap;
 css::uno::Reference mxDisabledBitmap;
 css::uno::Reference mxMaskBitmap;
 };
diff --git a/sd/source/console/PresenterButton.cxx 
b/sd/source/console/PresenterButton.cxx
index e493252ce123..10f5e83b4bcc 100644
--- a/sd/source/console/PresenterButton.cxx
+++ b/sd/source/console/PresenterButton.cxx
@@ -234,14 +234,14 @@ void SAL_CALL PresenterButton::windowPaint (const 
css::awt::PaintEvent& rEvent)
 void SAL_CALL PresenterButton::mousePressed (const css::awt::MouseEvent&)
 {
 ThrowIfDisposed();
-meState = PresenterBitmapDescriptor::ButtonDown;
+meState = PresenterBitmapDescriptor::Normal;
 }
 
 void SAL_CALL PresenterButton::mouseReleased (const css::awt::MouseEvent&)
 {
 ThrowIfDisposed();
 
-if (meState == PresenterBitmapDescriptor::ButtonDown)
+if (meState == PresenterBitmapDescriptor::Normal)
 {
 OSL_ASSERT(mpPresenterController);
 mpPresenterController->DispatchUnoCommand(msAction);
diff --git a/sd/source/console/PresenterToolBar.cxx 
b/sd/source/console/PresenterToolBar.cxx
index 2b2928d7cbea..849549c9f1e3 100644
--- a/sd/source/console/PresenterToolBar.cxx
+++ b/sd/source/console/PresenterToolBar.cxx
@@ -1430,7 +1430,7 @@ PresenterBitmapDescriptor::Mode Button::GetMode() const
 if ( ! IsEnabled())
 return Presente

core.git: sd/source sw/qa sw/source

2026-02-03 Thread Jonathan Clark (via logerrit)
 sd/source/ui/view/drtxtob1.cxx   |   22 ++--
 sw/qa/extras/uiwriter/uiwriter11.cxx |   24 +
 sw/source/uibase/shells/annotsh.cxx  |   20 ++
 sw/source/uibase/shells/drwtxtex.cxx |   20 ++
 sw/source/uibase/shells/txtattr.cxx  |   48 ---
 5 files changed, 34 insertions(+), 100 deletions(-)

New commits:
commit 8b08d755f202f10242768fc38e7466399baa778c
Author: Jonathan Clark 
AuthorDate: Tue Feb 3 06:13:45 2026 -0700
Commit: Jonathan Clark 
CommitDate: Tue Feb 3 17:02:23 2026 +0100

tdf#165206 Do not change alignment after direction change commands

Previously, the UNO commands to change paragraph direction could also
affect paragraph alignment in certain situations. For example, a
left-aligned LTR paragraph would become right-aligned after a switch to
RTL. This was done in order to smooth over usability rough edges due to
the lack of native start/end paragraph alignment.

We now support start/end paragraph alignment, and encourage its use by
default. This extra alignment change is no longer necessary.

Change-Id: I90b96c28e194e37fe0e782c054f6f7efdd4bf739
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198597
Reviewed-by: Jonathan Clark 
Tested-by: Jenkins

diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx
index 382bf6e4bc9d..751dca3f76d2 100644
--- a/sd/source/ui/view/drtxtob1.cxx
+++ b/sd/source/ui/view/drtxtob1.cxx
@@ -706,24 +706,10 @@ SET_ADJUST:
 else if ( nSlot == SID_ATTR_PARA_LEFT_TO_RIGHT ||
   nSlot == SID_ATTR_PARA_RIGHT_TO_LEFT )
 {
-bool bLeftToRight = nSlot == SID_ATTR_PARA_LEFT_TO_RIGHT;
-
-SvxAdjust nAdjust = SvxAdjust::ParaStart;
-if( const SvxAdjustItem* pAdjustItem = 
aEditAttr.GetItemIfSet(EE_PARA_JUST) )
-nAdjust = pAdjustItem->GetAdjust();
-
-if( bLeftToRight )
-{
-aNewAttr.Put( SvxFrameDirectionItem( 
SvxFrameDirection::Horizontal_LR_TB, EE_PARA_WRITINGDIR ) );
-if( nAdjust == SvxAdjust::Right )
-aNewAttr.Put( SvxAdjustItem( SvxAdjust::Left, 
EE_PARA_JUST ) );
-}
-else
-{
-aNewAttr.Put( SvxFrameDirectionItem( 
SvxFrameDirection::Horizontal_RL_TB, EE_PARA_WRITINGDIR ) );
-if( nAdjust == SvxAdjust::Left )
-aNewAttr.Put( SvxAdjustItem( SvxAdjust::Right, 
EE_PARA_JUST ) );
-}
+auto eFrameDirection = (nSlot == SID_ATTR_PARA_LEFT_TO_RIGHT)
+   ? 
SvxFrameDirection::Horizontal_LR_TB
+   : 
SvxFrameDirection::Horizontal_RL_TB;
+aNewAttr.Put(SvxFrameDirectionItem{ eFrameDirection, 
EE_PARA_WRITINGDIR });
 
 // tdf#162120: The paragraph direction has been manually set 
by the user.
 // Don't automatically adjust the paragraph direction anymore.
diff --git a/sw/qa/extras/uiwriter/uiwriter11.cxx 
b/sw/qa/extras/uiwriter/uiwriter11.cxx
index cdabafaeac85..9da790d04fde 100644
--- a/sw/qa/extras/uiwriter/uiwriter11.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter11.cxx
@@ -597,6 +597,30 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest11, testTdf163194)
 }
 }
 
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest11, 
testTdf165206DirSwitchPreservesAlignment)
+{
+createSwDoc();
+SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+CPPUNIT_ASSERT(pWrtShell);
+
+dispatchCommand(mxComponent, u".uno:ParaLeftToRight"_ustr, {});
+dispatchCommand(mxComponent, u".uno:LeftPara"_ustr, {});
+
+CPPUNIT_ASSERT_EQUAL(short(0),
+ getProperty(getRun(getParagraph(1), 1), 
u"WritingMode"_ustr));
+CPPUNIT_ASSERT_EQUAL(short(0),
+ getProperty(getRun(getParagraph(1), 1), 
u"ParaAdjust"_ustr));
+
+// Explicitly set the direction to RTL.
+// Previously, this would have also set ParaAdjust to force right.
+dispatchCommand(mxComponent, u".uno:ParaRightToLeft"_ustr, {});
+
+CPPUNIT_ASSERT_EQUAL(short(1),
+ getProperty(getRun(getParagraph(1), 1), 
u"WritingMode"_ustr));
+CPPUNIT_ASSERT_EQUAL(short(0),
+ getProperty(getRun(getParagraph(1), 1), 
u"ParaAdjust"_ustr));
+}
+
 } // end of anonymous namespace
 CPPUNIT_PLUGIN_IMPLEMENT();
 
diff --git a/sw/source/uibase/shells/annotsh.cxx 
b/sw/source/uibase/shells/annotsh.cxx
index b3da5d3aeddb..36c181d2fdb4 100644
--- a/sw/source/uibase/shells/annotsh.cxx
+++ b/sw/source/uibase/shells/annotsh.cxx
@@ -605,25 +605,11 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
 }
 SfxItemSet aAttr(SfxItemSet::makeFixedSfxItemSet<
 EE_PARA_WRITINGDIR, EE_PARA_WRITINGDIR,
- 

core.git: sd/source

2026-02-03 Thread Arnaud VERSINI (via logerrit)
 sd/source/ui/app/optsitem.cxx |  199 ++
 sd/source/ui/inc/optsitem.hxx |9 -
 2 files changed, 90 insertions(+), 118 deletions(-)

New commits:
commit 772c251919bfaa19b618e4c3093a195cb9bb0b1d
Author: Arnaud VERSINI 
AuthorDate: Mon Feb 2 12:38:38 2026 +0100
Commit: Arnaud Versini 
CommitDate: Tue Feb 3 14:29:45 2026 +0100

sd : use more OUString literal and simplify code

Change-Id: Ia481390554ba4b64764039b31a79893385afbb7f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198537
Tested-by: Jenkins
Reviewed-by: Arnaud Versini 

diff --git a/sd/source/ui/app/optsitem.cxx b/sd/source/ui/app/optsitem.cxx
index 021f5877aca2..64e8de54ae95 100644
--- a/sd/source/ui/app/optsitem.cxx
+++ b/sd/source/ui/app/optsitem.cxx
@@ -147,22 +147,6 @@ void SdOptionsGeneric::Commit( SdOptionsItem& rCfgItem ) 
const
 }
 }
 
-Sequence< OUString > SdOptionsGeneric::GetPropertyNames() const
-{
-sal_uLong   nCount;
-const char* const*  ppPropNames;
-
-GetPropNameArray( ppPropNames, nCount );
-
-Sequence< OUString > aNames( nCount );
-OUString*pNames = aNames.getArray();
-
-for( sal_uLong i = 0; i < nCount; i++ )
-pNames[ i ] = OUString::createFromAscii( ppPropNames[ i ] );
-
-return aNames;
-}
-
 void SdOptionsGeneric::Store()
 {
 if( mpCfgItem )
@@ -254,47 +238,47 @@ bool SdOptionsMisc::operator==( const SdOptionsMisc& rOpt 
) const
 );
 }
 
-void SdOptionsMisc::GetPropNameArray( const char* const*& ppNames, sal_uLong& 
rCount ) const
+Sequence< OUString > SdOptionsMisc::GetPropertyNames() const
 {
-static const char* const aPropNames[] =
+static constexpr OUString aPropNames[] =
 {
-"ObjectMoveable",
-"NoDistort",
-"TextObject/QuickEditing",
-"BackgroundCache",
-"CopyWhileMoving",
-"TextObject/Selectable",
-"DclickTextedit",
-"RotateClick",
-"Preview",
-"ModifyWithAttributes",
-"DefaultObjectSize/Width",
-"DefaultObjectSize/Height",
-
-"Compatibility/PrinterIndependentLayout",
-
-"ShowComments",
-"DragThresholdPixels",
+u"ObjectMoveable"_ustr,
+u"NoDistort"_ustr,
+u"TextObject/QuickEditing"_ustr,
+u"BackgroundCache"_ustr,
+u"CopyWhileMoving"_ustr,
+u"TextObject/Selectable"_ustr,
+u"DclickTextedit"_ustr,
+u"RotateClick"_ustr,
+u"Preview"_ustr,
+u"ModifyWithAttributes"_ustr,
+u"DefaultObjectSize/Width"_ustr,
+u"DefaultObjectSize/Height"_ustr,
+
+u"Compatibility/PrinterIndependentLayout"_ustr,
+
+u"ShowComments"_ustr,
+u"DragThresholdPixels"_ustr,
 
 // just for impress
-"NewDoc/AutoPilot",
-"Compatibility/AddBetween",
-"ShowUndoDeleteWarning",
-"SlideshowRespectZOrder",
+u"NewDoc/AutoPilot"_ustr,
+u"Compatibility/AddBetween"_ustr,
+u"ShowUndoDeleteWarning"_ustr,
+u"SlideshowRespectZOrder"_ustr,
 
-"PreviewNewEffects",
-"PreviewChangedEffects",
-"PreviewTransitions",
+u"PreviewNewEffects"_ustr,
+u"PreviewChangedEffects"_ustr,
+u"PreviewTransitions"_ustr,
 
-"Display",
+u"Display"_ustr,
 
-"PenColor",
-"PenWidth",
-"TabBarVisible"
+u"PenColor"_ustr,
+u"PenWidth"_ustr,
+u"TabBarVisible"_ustr
 };
 
-rCount = ( IsImpress() ? std::size(aPropNames) : 15 );
-ppNames = aPropNames;
+size_t len = ( IsImpress() ? std::size(aPropNames) : 15 );
+return Sequence(aPropNames, len);
 }
 
 bool SdOptionsMisc::ReadData( const Any* pValues )
@@ -529,37 +513,31 @@ void SdOptionsGrid::SetDefaults()
 SetGridVisible( false );
 }
 
-void SdOptionsGrid::GetPropNameArray( const char* const*& ppNames, sal_uLong& 
rCount ) const
+Sequence< OUString > SdOptionsGrid::GetPropertyNames() const
 {
 if( isMetricSystem() )
 {
-static const char* const aPropNamesMetric[] =
-{
-"Resolution/XAxis/Metric",
-"Resolution/YAxis/Metric",
-"Subdivision/XAxis",
-"Subdivision/YAxis",
-"Option/SnapToGrid",
-"Option/Synchronize",
-"Option/VisibleGrid"
-};
-ppNames = aPropNamesMetric;
-rCount = std::size(aPropNamesMetric);
+return Sequence({
+u"Resolution/XAxis/Metric"_ustr,
+u"Resolution/YAxis/Metric"_ustr,
+u"Subdivision/XAxis"_ustr,
+u"Subdivision/YAxis"_ustr,
+u"Option/SnapToGrid"_ustr,
+u"Option/Synchronize"_ustr,
+u"Option/VisibleGrid"_ustr
+});
 }
 else
 {
-static const char* const aPropNamesNonMetric[] =
-{
-"Resolution/XAxis/NonMetric",
-"Resolution/YAxis/NonMetric",
-"Subdivision/XA

core.git: sd/source

2026-02-01 Thread Gabor Kelemen (via logerrit)
 sd/source/console/PresenterScreen.cxx |   24 +---
 sd/source/console/PresenterScreen.hxx |   12 
 2 files changed, 9 insertions(+), 27 deletions(-)

New commits:
commit eadbdfcb1ac5897f792804dfacbd8f4040028456
Author: Gabor Kelemen 
AuthorDate: Sun Jan 18 23:56:12 2026 +0100
Commit: Gabor Kelemen 
CommitDate: Sun Feb 1 22:04:41 2026 +0100

Presenter console: simplify configuration access (PresenterScreenFullScreen)

for key
officecfg::Office::Impress::Misc::Start::PresenterScreenFullScreen

Change-Id: I0bb82f799de46398b9ff30d63dde29decfab253f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198068
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen 

diff --git a/sd/source/console/PresenterScreen.cxx 
b/sd/source/console/PresenterScreen.cxx
index c0857096319f..a23a63faadc9 100644
--- a/sd/source/console/PresenterScreen.cxx
+++ b/sd/source/console/PresenterScreen.cxx
@@ -274,18 +274,6 @@ PresenterScreen::~PresenterScreen()
 {
 }
 
-bool PresenterScreen::isPresenterScreenFullScreen(const 
css::uno::Reference& rxContext)
-{
-bool dPresenterScreenFullScreen = true;
-PresenterConfigurationAccess aConfiguration (
-rxContext,
-u"/org.openoffice.Office.Impress/"_ustr,
-PresenterConfigurationAccess::READ_ONLY);
-
aConfiguration.GetConfigurationNode(u"Misc/Start/PresenterScreenFullScreen"_ustr)
->>= dPresenterScreenFullScreen;
-return dPresenterScreenFullScreen;
-}
-
 void SAL_CALL PresenterScreen::disposing()
 {
 rtl::Reference<::sd::framework::ConfigurationController> xCC 
(mxConfigurationControllerWeak);
@@ -351,7 +339,7 @@ void PresenterScreen::InitializePresenterScreen()
 
 Reference xContext(mxContextWeak);
 rtl::Reference xMainPaneId(
-GetMainPaneId(xPresentation, xContext));
+GetMainPaneId(xPresentation));
 // An empty reference means that the presenter screen can
 // not or must not be displayed.
 if ( ! xMainPaneId.is())
@@ -448,7 +436,7 @@ void PresenterScreen::CheckNextSlideUpdate(const 
Reference& rxS
  * on or -1 to not show anything.
  */
 sal_Int32 PresenterScreen::GetPresenterScreenNumber (
-const Reference& rxPresentation) const
+const Reference& rxPresentation)
 {
 sal_Int32 nScreenNumber (0);
 try
@@ -493,10 +481,9 @@ sal_Int32 PresenterScreen::GetPresenterScreenNumber (
 // screen is shown only when a special flag in the configuration
 // is set or when the presenter screen will be shown as
 // non-full screen window
-Reference xContext (mxContextWeak);
 bool bStartAlways = 
officecfg::Office::PresenterScreen::Presenter::StartAlways::get().value_or(
 false);
-bool bPresenterScreenFullScreen = 
isPresenterScreenFullScreen(xContext);
+bool bPresenterScreenFullScreen = 
officecfg::Office::Impress::Misc::Start::PresenterScreenFullScreen::get();
 if (bStartAlways || !bPresenterScreenFullScreen)
 return GetPresenterScreenFromScreen(nScreenNumber);
 return -1;
@@ -540,8 +527,7 @@ sal_Int32 PresenterScreen::GetPresenterScreenFromScreen( 
sal_Int32 nPresentation
 }
 
 rtl::Reference PresenterScreen::GetMainPaneId (
-const Reference& rxPresentation,
-const Reference& xContext) const
+const Reference& rxPresentation)
 {
 // A negative value means that the presentation spans all available
 // displays.  That leaves no room for the presenter.
@@ -549,7 +535,7 @@ rtl::Reference 
PresenterScreen::GetMainPaneId (
 if (nScreen < 0)
 return nullptr;
 
-auto fullScreenStr = isPresenterScreenFullScreen(xContext)
+auto fullScreenStr = 
officecfg::Office::Impress::Misc::Start::PresenterScreenFullScreen::get()
 ? u"true"_ustr
 : u"false"_ustr;
 
diff --git a/sd/source/console/PresenterScreen.hxx 
b/sd/source/console/PresenterScreen.hxx
index 3869f6384758..8fc81bca2e0e 100644
--- a/sd/source/console/PresenterScreen.hxx
+++ b/sd/source/console/PresenterScreen.hxx
@@ -107,9 +107,6 @@ public:
 
 virtual void SAL_CALL disposing() override;
 
-static bool isPresenterScreenFullScreen(
-const css::uno::Reference& rxContext);
-
 /** Make the presenter screen visible.
 */
 void InitializePresenterScreen();
@@ -217,17 +214,16 @@ private:
 Returns -1 when the presenter screen can or shall not be
 displayed.
 */
-sal_Int32 GetPresenterScreenNumber (
-const css::uno::Reference& 
rxPresentation) const;
+static sal_Int32 GetPresenterScreenNumber (
+const css::uno::Reference& 
rxPresentation);
 
 static sal_Int32 GetPresenterScreenFromScreen( sal_Int32 
nPresentationScreen );
 
 /** Create a resource id for the full screen background pane so that it
 is displayed on another screen than the full screen presentation.
 */
-r

core.git: sd/source

2026-01-31 Thread Gabor Kelemen (via logerrit)
 sd/source/console/PresenterScreen.cxx |   15 ++-
 sd/source/console/PresenterScreen.hxx |2 --
 2 files changed, 2 insertions(+), 15 deletions(-)

New commits:
commit a2ac0b8a271d62224572695dee64a792bb38ef09
Author: Gabor Kelemen 
AuthorDate: Sun Jan 18 22:23:42 2026 +0100
Commit: Gabor Kelemen 
CommitDate: Sat Jan 31 23:33:31 2026 +0100

Presenter console: simplify configuration access (EnablePresenterScreen)

for key officecfg::Office::Impress::Misc::Start::EnablePresenterScreen

Change-Id: I635f6ba593ada4fcc4b2f6c4ba66684ddb98f6b3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198067
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen 

diff --git a/sd/source/console/PresenterScreen.cxx 
b/sd/source/console/PresenterScreen.cxx
index 33c9e0824c93..c0857096319f 100644
--- a/sd/source/console/PresenterScreen.cxx
+++ b/sd/source/console/PresenterScreen.cxx
@@ -35,6 +35,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #include 
@@ -211,7 +212,7 @@ void SAL_CALL PresenterScreenListener::notifyEvent( const 
css::document::EventOb
 if ( Event.EventName == "OnStartPresentation" )
 {
 mpPresenterScreen = new PresenterScreen(mxComponentContext, mxModel);
-if(PresenterScreen::isPresenterScreenEnabled(mxComponentContext))
+if ( 
officecfg::Office::Impress::Misc::Start::EnablePresenterScreen::get() )
 mpPresenterScreen->InitializePresenterScreen();
 }
 else if ( Event.EventName == "OnEndPresentation" )
@@ -273,18 +274,6 @@ PresenterScreen::~PresenterScreen()
 {
 }
 
-bool PresenterScreen::isPresenterScreenEnabled(const 
css::uno::Reference& rxContext)
-{
-bool dEnablePresenterScreen=true;
-PresenterConfigurationAccess aConfiguration (
-rxContext,
-u"/org.openoffice.Office.Impress/"_ustr,
-PresenterConfigurationAccess::READ_ONLY);
-
aConfiguration.GetConfigurationNode(u"Misc/Start/EnablePresenterScreen"_ustr)
->>= dEnablePresenterScreen;
-return dEnablePresenterScreen;
-}
-
 bool PresenterScreen::isPresenterScreenFullScreen(const 
css::uno::Reference& rxContext)
 {
 bool dPresenterScreenFullScreen = true;
diff --git a/sd/source/console/PresenterScreen.hxx 
b/sd/source/console/PresenterScreen.hxx
index 7076924c2db5..3869f6384758 100644
--- a/sd/source/console/PresenterScreen.hxx
+++ b/sd/source/console/PresenterScreen.hxx
@@ -107,8 +107,6 @@ public:
 
 virtual void SAL_CALL disposing() override;
 
-static bool isPresenterScreenEnabled(
-const css::uno::Reference& rxContext);
 static bool isPresenterScreenFullScreen(
 const css::uno::Reference& rxContext);
 


core.git: sd/source

2026-01-28 Thread shark (via logerrit)
 sd/source/ui/app/optsitem.cxx |   10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

New commits:
commit 6a07e077f90da850126fc9bf2d2960c8b32d5b1a
Author: shark 
AuthorDate: Sat Jan 17 13:01:59 2026 +
Commit: David Gilbert 
CommitDate: Wed Jan 28 23:42:28 2026 +0100

tdf#147021 use std::size() instead of SAL_N_ELEMENTS() macro

Change-Id: Ifd577b5e50805678a33209edec9c521b8e68a15f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197519
Reviewed-by: David Gilbert 
Tested-by: Jenkins
Reviewed-by: Simon Chenery 

diff --git a/sd/source/ui/app/optsitem.cxx b/sd/source/ui/app/optsitem.cxx
index 12208e4a310c..021f5877aca2 100644
--- a/sd/source/ui/app/optsitem.cxx
+++ b/sd/source/ui/app/optsitem.cxx
@@ -293,7 +293,7 @@ void SdOptionsMisc::GetPropNameArray( const char* const*& 
ppNames, sal_uLong& rC
 "TabBarVisible"
 };
 
-rCount = ( IsImpress() ? SAL_N_ELEMENTS(aPropNames) : 15 );
+rCount = ( IsImpress() ? std::size(aPropNames) : 15 );
 ppNames = aPropNames;
 }
 
@@ -544,7 +544,7 @@ void SdOptionsGrid::GetPropNameArray( const char* const*& 
ppNames, sal_uLong& rC
 "Option/VisibleGrid"
 };
 ppNames = aPropNamesMetric;
-rCount = SAL_N_ELEMENTS(aPropNamesMetric);
+rCount = std::size(aPropNamesMetric);
 }
 else
 {
@@ -559,7 +559,7 @@ void SdOptionsGrid::GetPropNameArray( const char* const*& 
ppNames, sal_uLong& rC
 "Option/VisibleGrid"
 };
 ppNames = aPropNamesNonMetric;
-rCount = SAL_N_ELEMENTS(aPropNamesNonMetric);
+rCount = std::size(aPropNamesNonMetric);
 }
 }
 
@@ -724,7 +724,7 @@ void SdOptionsPrint::GetPropNameArray( const char* const*& 
ppNames, sal_uLong& r
 "Other/HandoutHorizontal",
 "Other/PagesPerHandout"
 };
-rCount = SAL_N_ELEMENTS(aImpressPropNames);
+rCount = std::size(aImpressPropNames);
 ppNames = aImpressPropNames;
 }
 else
@@ -748,7 +748,7 @@ void SdOptionsPrint::GetPropNameArray( const char* const*& 
ppNames, sal_uLong& r
 "Other/Quality",
 "Content/Drawing",
 };
-rCount = SAL_N_ELEMENTS(aDrawPropNames);
+rCount = std::size(aDrawPropNames);
 ppNames = aDrawPropNames;
 }
 }


core.git: sd/source

2026-01-28 Thread shark (via logerrit)
 sd/source/console/PresenterButton.hxx  |5 +
 sd/source/console/PresenterConfigurationAccess.hxx |5 +
 sd/source/console/PresenterPane.hxx|5 +
 sd/source/console/PresenterPaneBase.hxx|5 +
 sd/source/console/PresenterScrollBar.hxx   |5 +
 sd/source/console/PresenterSprite.hxx  |5 +
 6 files changed, 6 insertions(+), 24 deletions(-)

New commits:
commit b9b65c3907186ac5a458a9339a23213b00f826c8
Author: shark 
AuthorDate: Mon Jan 26 13:38:30 2026 +
Commit: Julien Nabet 
CommitDate: Wed Jan 28 18:15:39 2026 +0100

tdf#143148 Used #pragma once instead of include guards in sd

Change-Id: Iecf4648ee9dbd05896fa7800eb0084314b040523
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198175
Tested-by: Jenkins
Reviewed-by: Julien Nabet 

diff --git a/sd/source/console/PresenterButton.hxx 
b/sd/source/console/PresenterButton.hxx
index 313748f22125..2d3ee149c941 100644
--- a/sd/source/console/PresenterButton.hxx
+++ b/sd/source/console/PresenterButton.hxx
@@ -17,8 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERBUTTON_HXX
-#define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERBUTTON_HXX
+#pragma once
 
 #include "PresenterBitmapContainer.hxx"
 #include "PresenterTheme.hxx"
@@ -132,6 +131,4 @@ private:
 
 }
 
-#endif
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/console/PresenterConfigurationAccess.hxx 
b/sd/source/console/PresenterConfigurationAccess.hxx
index 6d7867d1dc29..ae32c9f8ca57 100644
--- a/sd/source/console/PresenterConfigurationAccess.hxx
+++ b/sd/source/console/PresenterConfigurationAccess.hxx
@@ -17,8 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERCONFIGURATIONACCESS_HXX
-#define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERCONFIGURATIONACCESS_HXX
+#pragma once
 
 #include 
 #include 
@@ -172,6 +171,4 @@ private:
 
 } // end of namespace sdext::presenter
 
-#endif
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/console/PresenterPane.hxx 
b/sd/source/console/PresenterPane.hxx
index 9665f75e5123..9adc79408846 100644
--- a/sd/source/console/PresenterPane.hxx
+++ b/sd/source/console/PresenterPane.hxx
@@ -17,8 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERPANE_HXX
-#define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERPANE_HXX
+#pragma once
 
 #include "PresenterPaneBase.hxx"
 #include 
@@ -75,6 +74,4 @@ private:
 
 } // end of namespace ::sd::presenter
 
-#endif
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/console/PresenterPaneBase.hxx 
b/sd/source/console/PresenterPaneBase.hxx
index b2604fce0ea9..146b6d4add11 100644
--- a/sd/source/console/PresenterPaneBase.hxx
+++ b/sd/source/console/PresenterPaneBase.hxx
@@ -17,8 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERPANEBASE_HXX
-#define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERPANEBASE_HXX
+#pragma once
 
 #include "PresenterPaneBorderPainter.hxx"
 
@@ -113,6 +112,4 @@ protected:
 
 } // end of namespace ::sd::presenter
 
-#endif
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/console/PresenterScrollBar.hxx 
b/sd/source/console/PresenterScrollBar.hxx
index d09924785c58..5ac3e31051d4 100644
--- a/sd/source/console/PresenterScrollBar.hxx
+++ b/sd/source/console/PresenterScrollBar.hxx
@@ -17,8 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERSCROLLBAR_HXX
-#define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERSCROLLBAR_HXX
+#pragma once
 
 #include "PresenterBitmapContainer.hxx"
 #include 
@@ -252,6 +251,4 @@ private:
 
 } // end of namespace ::sdext::presenter
 
-#endif
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/console/PresenterSprite.hxx 
b/sd/source/console/PresenterSprite.hxx
index b550ec0a815f..93b4325624ca 100644
--- a/sd/source/console/PresenterSprite.hxx
+++ b/sd/source/console/PresenterSprite.hxx
@@ -17,8 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERSPRITE_HXX
-#define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERSPRITE_HXX
+#pragma once
 
 #include 
 #include 
@@ -68,6 +67,4 @@ private:
 };
 }
 
-#endif
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


core.git: sd/source

2026-01-28 Thread Mohit Marathe (via logerrit)
 sd/source/ui/view/drviews1.cxx |   12 
 sd/source/ui/view/drviews2.cxx |1 -
 sd/source/ui/view/outlnvs2.cxx |2 --
 sd/source/ui/view/outlnvsh.cxx |2 ++
 sd/source/ui/view/viewshe2.cxx |1 +
 5 files changed, 11 insertions(+), 7 deletions(-)

New commits:
commit e2e70915c59c1540160c1608d964af0c760c3ee0
Author: Mohit Marathe 
AuthorDate: Wed Jan 28 12:16:04 2026 +0530
Commit: Michael Stahl 
CommitDate: Wed Jan 28 14:13:48 2026 +0100

tdf#170324 sd: only trigger auto zoom change when switching to or from

canvas page.
Also, call RememberPageZoom from a more general place i.e.
*ViewShell::SetZoom, so that page zoom is remembered when zoom is
changed via any method.

Signed-off-by: Mohit Marathe 
Change-Id: Ib9a4efc6b641b1f52d263f4cc903ebc90630340b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198253
Tested-by: Jenkins
Reviewed-by: Michael Stahl 

diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx
index 0f2102119901..dbf8c9c82de5 100644
--- a/sd/source/ui/view/drviews1.cxx
+++ b/sd/source/ui/view/drviews1.cxx
@@ -266,6 +266,7 @@ void DrawViewShell::SetZoom( ::tools::Long nZoom )
 GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOMSLIDER );
 mpViewOverlayManager->onZoomChanged();
 collectUIInformation(OUString::number(nZoom));
+RememberPageZoom(nZoom);
 }
 
 /**
@@ -1149,11 +1150,14 @@ bool DrawViewShell::SwitchPage(sal_uInt16 
nSelectedPage, bool bAllowChangeFocus,
 }
 else
 {
-const sal_uInt16 nZoom = GetPageZoom();
-if (nZoom)
+if (bChangeZoom && bAllowChangeFocus)
 {
-const SvxZoomItem aZoomItem(SvxZoomType::PERCENT, nZoom, 
SID_ATTR_ZOOM);
-
GetViewFrame()->GetDispatcher()->ExecuteList(SID_ATTR_ZOOM, SfxCallMode::SLOT, 
{&aZoomItem});
+const sal_uInt16 nZoom = GetPageZoom();
+if (nZoom)
+{
+const SvxZoomItem aZoomItem(SvxZoomType::PERCENT, 
nZoom, SID_ATTR_ZOOM);
+
GetViewFrame()->GetDispatcher()->ExecuteList(SID_ATTR_ZOOM, SfxCallMode::SLOT, 
{&aZoomItem});
+}
 }
 }
 
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 78cbde2e1438..fe4f0fb81500 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -1654,7 +1654,6 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
 {
 sal_uInt16 nZoom = pArgs->Get( SID_ATTR_ZOOM 
).GetValue();
 SetZoom( static_cast<::tools::Long>( nZoom ) );
-RememberPageZoom(nZoom);
 }
 break;
 
diff --git a/sd/source/ui/view/outlnvs2.cxx b/sd/source/ui/view/outlnvs2.cxx
index 6bfa2d9dc179..9aaa16557a5a 100644
--- a/sd/source/ui/view/outlnvs2.cxx
+++ b/sd/source/ui/view/outlnvs2.cxx
@@ -88,8 +88,6 @@ void OutlineViewShell::FuTemporary(SfxRequest &rReq)
 SetZoom( static_cast<::tools::Long>( pArgs->Get( 
SID_ATTR_ZOOM ).GetValue()) );
 Invalidate( SID_ATTR_ZOOM );
 Invalidate( SID_ATTR_ZOOMSLIDER );
-sal_uInt16 nZoom = aZoom.GetValue();
-RememberPageZoom(nZoom);
 }
 break;
 
diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx
index 1803297eae4d..248187745b53 100644
--- a/sd/source/ui/view/outlnvsh.cxx
+++ b/sd/source/ui/view/outlnvsh.cxx
@@ -1126,6 +1126,8 @@ void OutlineViewShell::SetZoom(::tools::Long nZoom)
 
 GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOM );
 GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOMSLIDER );
+
+RememberPageZoom(nZoom);
 }
 
 /**
diff --git a/sd/source/ui/view/viewshe2.cxx b/sd/source/ui/view/viewshe2.cxx
index b264bb89121a..aeee29008f2b 100644
--- a/sd/source/ui/view/viewshe2.cxx
+++ b/sd/source/ui/view/viewshe2.cxx
@@ -405,6 +405,7 @@ void ViewShell::SetZoom(::tools::Long nZoom)
 }
 
 UpdateScrollBars();
+RememberPageZoom(nZoom);
 }
 
 ::tools::Long ViewShell::GetZoom() const


core.git: sd/source

2026-01-27 Thread Karthik Godha (via logerrit)
 sd/source/filter/ppt/pptin.cxx |   17 ++---
 1 file changed, 10 insertions(+), 7 deletions(-)

New commits:
commit 59382f50efb869982ac22a2e1e42adc21357f797
Author: Karthik Godha 
AuthorDate: Wed Dec 31 14:58:27 2025 +0530
Commit: Michael Stahl 
CommitDate: Tue Jan 27 14:24:12 2026 +0100

tdf#170181: PPT placeholder imported as OLE object

Placeholder for (table, chart, image) is imported as OLE object
instead of placeholder

Change-Id: I62d5ac3e48d51944629f0eb82de390db10a59c2c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196352
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit 6d44b4a044b6571b7ef878650c3e328193ea8fba)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198176
Tested-by: Jenkins

diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
index b39dbc73baed..44244f0a6b7b 100644
--- a/sd/source/filter/ppt/pptin.cxx
+++ b/sd/source/filter/ppt/pptin.cxx
@@ -2411,13 +2411,16 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* 
pTextObj, SdrTextObj* pObj
 {
 switch ( nPlaceholderId )
 {
-case PptPlaceholder::MEDIACLIP :
-case PptPlaceholder::OBJECT : ePresObjKind 
= PresObjKind::Object; break;
-case PptPlaceholder::GRAPH : ePresObjKind 
= PresObjKind::Chart; break;
-case PptPlaceholder::TABLE : ePresObjKind 
= PresObjKind::Table; break;
-case PptPlaceholder::CLIPART : 
ePresObjKind = PresObjKind::Graphic; break;
-case PptPlaceholder::ORGANISZATIONCHART : 
ePresObjKind = PresObjKind::OrgChart; break;
-default: break;
+case PptPlaceholder::MEDIACLIP:
+case PptPlaceholder::OBJECT:
+case PptPlaceholder::GRAPH:
+case PptPlaceholder::TABLE:
+case PptPlaceholder::CLIPART:
+case PptPlaceholder::ORGANISZATIONCHART:
+ePresObjKind = PresObjKind::Outline;
+break;
+default:
+break;
 }
 }
 };


core.git: sd/source

2026-01-27 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

New commits:
commit 6d6cdd405064e2db6cfb47f745b22f9e86d5265a
Author: Karthik Godha 
AuthorDate: Thu Dec 25 17:24:54 2025 +0530
Commit: Michael Stahl 
CommitDate: Tue Jan 27 14:23:40 2026 +0100

PPTX->PPTX Invalid value in 'h' attribute of hsl

'h' attribute inside XML_hsl (CT_TLByHslColorTransform) can't be a
decimal value.

Test file: rhbz710556-3.pptx

Change-Id: I4ac7af4115c3ad92c4ca9b9a8be09f806686
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196218
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit 134c9391b0def6b632645e8296251daff9eeafed)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198174
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index 346ad6b01070..a534ca715053 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -17,6 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include 
 #include 
 #include 
 #include 
@@ -182,9 +183,9 @@ void WriteAnimateColorColor(const FSHelperPtr& pFS, const 
Any& rAny, sal_Int32 n
 if (nToken == XML_by)
 {
 // CT_TLByHslColorTransform
-pFS->singleElementNS(XML_p, XML_hsl, XML_h, OString::number(aHSL[0] * 
6), // ST_Angel
- XML_s, OString::number(aHSL[1] * 10), XML_l,
- OString::number(aHSL[2] * 10));
+pFS->singleElementNS(
+XML_p, XML_hsl, XML_h, OString::number(std::round(aHSL[0] * 
6)), // ST_Angel
+XML_s, OString::number(aHSL[1] * 10), XML_l, 
OString::number(aHSL[2] * 10));
 }
 else
 {


core.git: sd/source

2026-01-26 Thread Julien Nabet (via logerrit)
 sd/source/ui/app/optsitem.cxx |6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

New commits:
commit 813afaab533374c8ee977b018343289e86af95f6
Author: Julien Nabet 
AuthorDate: Sun Jan 25 14:50:55 2026 +0100
Commit: Julien Nabet 
CommitDate: Mon Jan 26 19:37:07 2026 +0100

SnapGrid/Size is nowhere to be found

Noticed this error message when just starting Impress
warn:unotools.config:35226:35226:unotools/source/config/configitem.cxx:417:
ignoring XHierarchicalNameAccess SnapGrid/Size 
com.sun.star.container.NoSuchElementException
message: "SnapGrid/Size at 
/home/julien/lo/libreoffice/configmgr/source/access.cxx:447"
context: configmgr::RootAccess

Change-Id: Ib741e6eacf39451a29a23dadaa9d1a21c65d7668
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198064
Tested-by: Jenkins
Reviewed-by: Julien Nabet 

diff --git a/sd/source/ui/app/optsitem.cxx b/sd/source/ui/app/optsitem.cxx
index 8bbee5825330..12208e4a310c 100644
--- a/sd/source/ui/app/optsitem.cxx
+++ b/sd/source/ui/app/optsitem.cxx
@@ -541,8 +541,7 @@ void SdOptionsGrid::GetPropNameArray( const char* const*& 
ppNames, sal_uLong& rC
 "Subdivision/YAxis",
 "Option/SnapToGrid",
 "Option/Synchronize",
-"Option/VisibleGrid",
-"SnapGrid/Size"
+"Option/VisibleGrid"
 };
 ppNames = aPropNamesMetric;
 rCount = SAL_N_ELEMENTS(aPropNamesMetric);
@@ -557,8 +556,7 @@ void SdOptionsGrid::GetPropNameArray( const char* const*& 
ppNames, sal_uLong& rC
 "Subdivision/YAxis",
 "Option/SnapToGrid",
 "Option/Synchronize",
-"Option/VisibleGrid",
-"SnapGrid/Size"
+"Option/VisibleGrid"
 };
 ppNames = aPropNamesNonMetric;
 rCount = SAL_N_ELEMENTS(aPropNamesNonMetric);


core.git: sd/source slideshow/source

2026-01-26 Thread Vladislav Tarakanov (via logerrit)
 sd/source/ui/slideshow/slideshowimpl.cxx   |6 +
 slideshow/source/engine/slideoverlaybutton.cxx |   12 ++
 slideshow/source/engine/slideoverlaybutton.hxx |2 
 slideshow/source/engine/slideshowimpl.cxx  |  147 -
 4 files changed, 165 insertions(+), 2 deletions(-)

New commits:
commit b6bec207724d19bb04f7bf2e3deba3a1e70f895e
Author: Vladislav Tarakanov 
AuthorDate: Wed Jan 7 14:37:24 2026 +0400
Commit: Samuel Mehrbrodt 
CommitDate: Mon Jan 26 10:59:04 2026 +0100

tdf#158394 Automatic scaling of icons for navigation bar

Added handling for the viewAdded and
viewChanged events, which cause navigation bar
icons to change if they don't fit the current
presentation area size.

This handler is only applied when automatic
scaling of the navigation bar is enabled, so it
shouldn't impact performance when the bar isn't
used or a fixed size is selected.

Icon sizes:
XLarge for UHD and above
Large for FHD and up
Small for anything smaller than FHD

Change-Id: I9f6599291d57aca9991c8d2dd2969d1edb36080e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196157
Reviewed-by: Heiko Tietze 
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt 

diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx 
b/sd/source/ui/slideshow/slideshowimpl.cxx
index 0f18410a3ad3..92b8b605af5c 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -1303,6 +1303,12 @@ bool SlideshowImpl::startShowImpl( const Sequence< 
beans::PropertyValue >& aProp
 break;
 }
 case NavbarButtonSize::Auto:
+{
+
mxShow->setProperty(beans::PropertyValue("NavigationBarAutoscale", -1,
+Any(true),
+PropertyState_DIRECT_VALUE));
+}
+[[fallthrough]]; // Preset default buttons size
 case NavbarButtonSize::Small:
 default:
 {
diff --git a/slideshow/source/engine/slideoverlaybutton.cxx 
b/slideshow/source/engine/slideoverlaybutton.cxx
index 2aad5cd793cf..43b72dcd3332 100644
--- a/slideshow/source/engine/slideoverlaybutton.cxx
+++ b/slideshow/source/engine/slideoverlaybutton.cxx
@@ -83,6 +83,18 @@ void SlideOverlayButton::setVisible(const bool bVisible)
 mrScreenUpdater.requestImmediateUpdate();
 }
 
+void SlideOverlayButton::clear()
+{
+mrEventMultiplexer.removeViewHandler(
+std::dynamic_pointer_cast(shared_from_this()));
+mrEventMultiplexer.removeClickHandler(
+std::dynamic_pointer_cast(shared_from_this()));
+for (auto& item : maViews)
+{
+item.second->getContentCanvas()->clear();
+}
+}
+
 css::geometry::IntegerSize2D SlideOverlayButton::getSize() const { return 
mxIconBitmap->getSize(); }
 
 basegfx::B2DPoint SlideOverlayButton::calcSpritePos(UnoViewSharedPtr const& 
rView) const
diff --git a/slideshow/source/engine/slideoverlaybutton.hxx 
b/slideshow/source/engine/slideoverlaybutton.hxx
index ceec9eed7b59..ab4bb23d6f74 100644
--- a/slideshow/source/engine/slideoverlaybutton.hxx
+++ b/slideshow/source/engine/slideoverlaybutton.hxx
@@ -66,6 +66,8 @@ public:
 css::geometry::IntegerSize2D getSize() const;
 basegfx::B2DPoint calcSpritePos(UnoViewSharedPtr const& rView) const;
 
+void clear();
+
 private:
 SlideOverlayButton(css::uno::Reference 
xIconBitmap,
css::awt::Point pPosition,
diff --git a/slideshow/source/engine/slideshowimpl.cxx 
b/slideshow/source/engine/slideshowimpl.cxx
index c84cda86a3ca..71af70f54841 100644
--- a/slideshow/source/engine/slideshowimpl.cxx
+++ b/slideshow/source/engine/slideshowimpl.cxx
@@ -63,6 +63,9 @@
 #include 
 #include 
 
+#include 
+#include 
+
 #include 
 #include 
 #include 
@@ -101,6 +104,18 @@ namespace box2d::utils { class box2DWorld;
 
 namespace {
 
+constexpr OUString BMP_PREV_SLIDE_SMALL = u"sd/res/prevslide_small.png"_ustr;
+constexpr OUString BMP_NEXT_SLIDE_SMALL = u"sd/res/nextslide_small.png"_ustr;
+constexpr OUString BMP_MENU_SLIDE_SMALL = 
u"sd/res/slideshowmenu_small.png"_ustr;
+
+constexpr OUString BMP_PREV_SLIDE_LARGE = u"sd/res/prevslide_large.png"_ustr;
+constexpr OUString BMP_NEXT_SLIDE_LARGE = u"sd/res/nextslide_large.png"_ustr;
+constexpr OUString BMP_MENU_SLIDE_LARGE = 
u"sd/res/slideshowmenu_large.png"_ustr;
+
+constexpr OUString BMP_PREV_SLIDE_EXTRALARGE = 
u"sd/res/prevslide_extralarge.png"_ustr;
+constexpr OUString BMP_NEXT_SLIDE_EXTRALARGE = 
u"sd/res/nextslide_extralarge.png"_ustr;
+constexpr OUString BMP_MENU_SLIDE_EXTRALARGE = 
u"sd/res/slideshowmenu_extralarge.png"_ustr;
+
 /** During animations the update() method tells its caller to call it as
 soon as possible.  This gives us more time to render the next frame and
 still maintain a steady frame rate.  This class is 

core.git: sd/source

2026-01-23 Thread Pragat Pandya (via logerrit)
 sd/source/ui/slideshow/showwin.cxx |   47 ++---
 1 file changed, 39 insertions(+), 8 deletions(-)

New commits:
commit 62f1ba6a1abc1566b253de5914646796e9a5c751
Author: Pragat Pandya 
AuthorDate: Tue Dec 30 20:32:32 2025 +0530
Commit: Hossein 
CommitDate: Fri Jan 23 23:38:57 2026 +0100

tdf#132086 sd: Fix logo size and position on slideshow pause screen

The logo displayed during the slideshow pause screen was too small
and positioned in the bottom-right corner. This was because the
logo's "preferred size" from the SVG was used directly without
scaling to fit the display.

The fix:
- Scales the logo to 1/3 of the smaller screen dimension while
  maintaining aspect ratio
- Centers the logo on the screen instead of placing it in the corner
This ensures the logo is visible and properly sized on all screen
resolutions, including ultrawide monitors.

Change-Id: Id3f1d05a4d3a47cb258f2ec8a0d00df7c15b0d3f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196335
Tested-by: Jenkins
Tested-by: Hossein 
Reviewed-by: Hossein 

diff --git a/sd/source/ui/slideshow/showwin.cxx 
b/sd/source/ui/slideshow/showwin.cxx
index 2c402950a8e0..a63093492a61 100644
--- a/sd/source/ui/slideshow/showwin.cxx
+++ b/sd/source/ui/slideshow/showwin.cxx
@@ -480,8 +480,35 @@ void ShowWindow::DrawPauseScene( bool bTimeoutOnly )
 else
 aGrfSize = OutputDevice::LogicToLogic( maLogo.GetPrefSize(), 
maLogo.GetPrefMapMode(), rMap );
 
-const Point aGrfPos( std::max( aOutOrg.X() + aOutSize.Width() - 
aGrfSize.Width() - aOffset.Width(), aOutOrg.X() ),
- std::max( aOutOrg.Y() + aOutSize.Height() - 
aGrfSize.Height() - aOffset.Height(), aOutOrg.Y() ) );
+// Scale the logo to fit a reasonable portion of the screen while 
maintaining aspect ratio
+if (aGrfSize.Width() > 0 && aGrfSize.Height() > 0)
+{
+// Use 1/3 of the smaller screen dimension as max size
+const tools::Long nMaxLogoSize = std::min(aOutSize.Width(), 
aOutSize.Height()) / 3;
+
+// Calculate scale factor to fit within max size while keeping 
aspect ratio
+const double fLogoAspect = static_cast(aGrfSize.Width()) / 
aGrfSize.Height();
+tools::Long nNewWidth, nNewHeight;
+
+if (fLogoAspect >= 1.0)  // wider than tall
+{
+nNewWidth = nMaxLogoSize;
+nNewHeight = static_cast(nMaxLogoSize / 
fLogoAspect);
+}
+else  // taller than wide
+{
+nNewHeight = nMaxLogoSize;
+nNewWidth = static_cast(nMaxLogoSize * 
fLogoAspect);
+}
+
+aGrfSize = Size(nNewWidth, nNewHeight);
+}
+
+// Center the logo on screen
+const Point aGrfPos(
+aOutOrg.X() + (aOutSize.Width() - aGrfSize.Width()) / 2,
+aOutOrg.Y() + (aOutSize.Height() - aGrfSize.Height()) / 2
+);
 
 if( maLogo.IsAnimated() )
 maLogo.StartAnimation(*GetOutDev(), aGrfPos, aGrfSize, 
reinterpret_cast(this));
@@ -501,15 +528,19 @@ void ShowWindow::DrawPauseScene( bool bTimeoutOnly )
 // set font first, to determine real output height
 pVDev->SetFont( aFont );
 
-const Size aVDevSize( aOutSize.Width(), pVDev->GetTextHeight() );
+// Note: if performance gets an issue here, we can use NumberFormatter 
directly
+SvtSysLocaleaSysLocale;
+const LocaleDataWrapper&aLocaleData = aSysLocale.GetLocaleData();
+
+aText += " ( " + aLocaleData.getDuration( ::tools::Duration( 0, 0, 0, 
mnPauseTimeout, 0 )) + " )";
+
+// Size the VirtualDevice to fit only the text width (plus offset 
padding),
+// not the full screen width, to avoid overlapping the centered logo
+const tools::Long nTextWidth = pVDev->GetTextWidth( aText ) + 2 * 
aOffset.Width();
+const Size aVDevSize( nTextWidth, pVDev->GetTextHeight() );
 
 if( pVDev->SetOutputSize( aVDevSize ) )
 {
-// Note: if performance gets an issue here, we can use 
NumberFormatter directly
-SvtSysLocaleaSysLocale;
-const LocaleDataWrapper&aLocaleData = 
aSysLocale.GetLocaleData();
-
-aText += " ( " + aLocaleData.getDuration( ::tools::Duration( 0, 0, 
0, mnPauseTimeout, 0 )) + " )";
 pVDev->DrawText( Point( aOffset.Width(), 0 ), aText );
 GetOutDev()->DrawOutDev( Point( aOutOrg.X(), aOffset.Height() ), 
aVDevSize, Point(), aVDevSize, *pVDev );
 bDrawn = true;


core.git: sd/source

2026-01-23 Thread Caolán McNamara (via logerrit)
 sd/source/ui/view/viewshe3.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 8b9d9a2b447e9e0b912f5db5eadac776b9689bc6
Author: Caolán McNamara 
AuthorDate: Thu Jan 22 13:06:47 2026 +
Commit: Caolán McNamara 
CommitDate: Fri Jan 23 10:04:23 2026 +0100

cid#1680358 Dereference before null check

Change-Id: Ibf1d4937dca8783f27898af524ed154399b5069a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197815
Reviewed-by: Caolán McNamara 
Tested-by: Jenkins

diff --git a/sd/source/ui/view/viewshe3.cxx b/sd/source/ui/view/viewshe3.cxx
index 6c7cd1f06d0d..da990a1ea057 100644
--- a/sd/source/ui/view/viewshe3.cxx
+++ b/sd/source/ui/view/viewshe3.cxx
@@ -164,7 +164,7 @@ SdPage* ViewShell::CreateOrDuplicatePage (
 SdPage* pPage,
 const sal_Int32 nInsertPosition)
 {
-if (pPage->IsCanvasPage())
+if (pPage && pPage->IsCanvasPage())
 return nullptr;
 sal_uInt16 nSId = rRequest.GetSlot();
 SdDrawDocument* pDocument = GetDoc();


core.git: sd/source

2026-01-23 Thread Caolán McNamara (via logerrit)
 sd/source/core/drawdoc2.cxx |5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

New commits:
commit 168fadadbc8aceb9e2247a06918ac6ed8d000fa5
Author: Caolán McNamara 
AuthorDate: Thu Jan 22 13:04:21 2026 +
Commit: Caolán McNamara 
CommitDate: Fri Jan 23 10:03:56 2026 +0100

cid#1680361 Unchecked dynamic_cast

Change-Id: I49268b245038541c007cb714cdc2309aba2440ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197812
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx
index 88612cc7e640..da94ff711768 100644
--- a/sd/source/core/drawdoc2.cxx
+++ b/sd/source/core/drawdoc2.cxx
@@ -516,9 +516,10 @@ rtl::Reference 
SdDrawDocument::RemovePage(sal_uInt16 nPgNum)
 auto pSdPage = static_cast(pPage.get());
 if (pSdPage->IsCanvasPage())
 {
-if (comphelper::LibreOfficeKit::isActive())
+DrawViewShell* pDrawViewSh = comphelper::LibreOfficeKit::isActive() ?
+dynamic_cast(mpDocSh->GetViewShell()) : nullptr;
+if (pDrawViewSh)
 {
-DrawViewShell* pDrawViewSh = 
dynamic_cast(mpDocSh->GetViewShell());
 pDrawViewSh->RememberCanvasPageVisArea(::tools::Rectangle());
 }
 mpCanvasPage = nullptr;


core.git: sd/source

2026-01-23 Thread Caolán McNamara (via logerrit)
 sd/source/ui/view/frmview.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit d44849bb85995f71c93cbc7c78f7861ff1c0d63f
Author: Caolán McNamara 
AuthorDate: Thu Jan 22 13:02:47 2026 +
Commit: Caolán McNamara 
CommitDate: Fri Jan 23 10:03:01 2026 +0100

cid#1680366 Unchecked dynamic_cast

Change-Id: I92e29cbb4ba34cf0d6addfd106f8370b7befe9a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197811
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sd/source/ui/view/frmview.cxx b/sd/source/ui/view/frmview.cxx
index 2d6cc454bb02..e67e49830e9c 100644
--- a/sd/source/ui/view/frmview.cxx
+++ b/sd/source/ui/view/frmview.cxx
@@ -480,7 +480,7 @@ void FrameView::WriteUserDataSequence ( css::uno::Sequence 
< css::beans::Propert
 aUserData.emplace_back( sUNO_View_GridSnapWidthYDenominator, Any( 
GetSnapGridWidthY().GetDenominator() ) );
 aUserData.emplace_back( sUNO_View_IsAngleSnapEnabled, Any( 
IsAngleSnapEnabled() ) );
 aUserData.emplace_back( sUNO_View_SnapAngle, Any( 
static_cast(GetSnapAngle()) ) );
-aUserData.emplace_back( sUNO_View_HasCanvasPage, Any( 
pDrawDocument->HasCanvasPage() ) );
+aUserData.emplace_back( sUNO_View_HasCanvasPage, Any( pDrawDocument && 
pDrawDocument->HasCanvasPage() ) );
 
 const sal_Int32 nOldLength = rValues.getLength();
 rValues.realloc( nOldLength + aUserData.size() );


core.git: sd/source

2026-01-22 Thread Caolán McNamara (via logerrit)
 sd/source/ui/func/fusel.cxx |   10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

New commits:
commit 1d4152621bea71d09b2a50c4927eebfa6bc48e0a
Author: Caolán McNamara 
AuthorDate: Thu Jan 22 13:05:27 2026 +
Commit: Caolán McNamara 
CommitDate: Thu Jan 22 20:37:12 2026 +0100

cid#1680360 Unchecked dynamic_cast

Change-Id: Ifb25c080e7894e44176873b973e217220a596ea6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197813
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sd/source/ui/func/fusel.cxx b/sd/source/ui/func/fusel.cxx
index 50811e0b98f8..65b113afe2f5 100644
--- a/sd/source/ui/func/fusel.cxx
+++ b/sd/source/ui/func/fusel.cxx
@@ -356,10 +356,12 @@ bool FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
 {
 if (rMEvt.GetClicks() == 2)
 {
-SdrPageObj* pPageObj = 
static_cast(pObj);
-sal_uInt16 nPageNum = 
(pPageObj->GetReferencedPage()->GetPageNum() - 1) / 2;
-DrawViewShell* pDrawViewShell = 
dynamic_cast(&mrViewShell);
-pDrawViewShell->SwitchPage(nPageNum);
+if (DrawViewShell* pDrawViewShell = 
dynamic_cast(&mrViewShell))
+{
+SdrPageObj* pPageObj = 
static_cast(pObj);
+sal_uInt16 nPageNum = 
(pPageObj->GetReferencedPage()->GetPageNum() - 1) / 2;
+pDrawViewShell->SwitchPage(nPageNum);
+}
 }
 }
 }


core.git: sd/source

2026-01-22 Thread Michael Weghorn (via logerrit)
 sd/source/ui/sidebar/LayoutMenu.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 510f14518d90c0fbfb5c147132e3d7ac7850b4cb
Author: Michael Weghorn 
AuthorDate: Wed Jan 21 12:33:38 2026 +0100
Commit: Michael Weghorn 
CommitDate: Thu Jan 22 18:01:02 2026 +0100

tdf#168281 sd: Don't set texts for slide layouts in icon view

Don't set the layout names as strings to be displayed
by the icon view.

This aligns the vcl/SalInstanceIconView case with the
gtk3 one where the texts are not displayed anyway, as well
as with the behavior prior to

commit cf523a77a76645f301aaa43b57b0c78c8c685561
Date:   Thu Jun 12 22:28:06 2025 +0530

tdf#166964 Switch to IconView in LayoutMenu for improved UI handling

. It also fixes rendering issues and the problem of
not enough space getting allocated to show all layouts at
the same time for the vcl implementation, as described in
tdf#168281.

The layout names are still available via tooltips and
as accessible names.

Change-Id: Iaa0bd000344ef6d9a938f869dc22b1e50f96aa83
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197738
Reviewed-by: Michael Weghorn 
Tested-by: Jenkins

diff --git a/sd/source/ui/sidebar/LayoutMenu.cxx 
b/sd/source/ui/sidebar/LayoutMenu.cxx
index 0a99ef3d0d35..47dd26289c97 100644
--- a/sd/source/ui/sidebar/LayoutMenu.cxx
+++ b/sd/source/ui/sidebar/LayoutMenu.cxx
@@ -489,7 +489,7 @@ void LayoutMenu::Fill()
 else
 {
 Bitmap aPreviewBitmap = GetPreviewAsBitmap(aImg);
-mxLayoutIconView->insert(id, &sLayoutName, &sId, 
&aPreviewBitmap, nullptr);
+mxLayoutIconView->insert(id, nullptr, &sId, 
&aPreviewBitmap, nullptr);
 mxLayoutIconView->set_item_accessible_name(id, 
sLayoutName);
 mxLayoutIconView->set_item_tooltip_text(id, sLayoutName);
 }


core.git: sd/source

2026-01-22 Thread Caolán McNamara (via logerrit)
 sd/source/console/PresenterHelpView.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 2e50d024cb23bd4f12635fd12170240d8cc24390
Author: Caolán McNamara 
AuthorDate: Thu Jan 22 10:30:40 2026 +
Commit: Caolán McNamara 
CommitDate: Thu Jan 22 13:50:02 2026 +0100

cid#1680629 Dereference after null check

Change-Id: I5c9d1e9955943da237a284757c1ba1a1d0fe368c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197800
Reviewed-by: Caolán McNamara 
Tested-by: Jenkins

diff --git a/sd/source/console/PresenterHelpView.cxx 
b/sd/source/console/PresenterHelpView.cxx
index 81672b64d3a3..151ace77fb5a 100644
--- a/sd/source/console/PresenterHelpView.cxx
+++ b/sd/source/console/PresenterHelpView.cxx
@@ -348,7 +348,7 @@ void PresenterHelpView::ReadHelpStrings()
 for (const auto& pair: HelpStrings)
 mpTextContainer->push_back(
 std::make_shared(
-SdResId(pair.first), SdResId(pair.second), mpFont->mxFont, 
mnMaximalWidth));
+SdResId(pair.first), SdResId(pair.second), mpFont ? mpFont->mxFont 
: nullptr, mnMaximalWidth));
 }
 
 void PresenterHelpView::CheckFontSize()


core.git: sd/source

2026-01-20 Thread Xisco Fauli (via logerrit)
 sd/source/ui/view/ViewShellBase.cxx |   10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

New commits:
commit 10ce0a8084f94a00904d5d838a2a0df47a5be2ba
Author: Xisco Fauli 
AuthorDate: Tue Jan 20 17:44:50 2026 +0100
Commit: Xisco Fauli 
CommitDate: Tue Jan 20 21:03:49 2026 +0100

crashreporting: check GetViewShell()

Seen in 
https://crashreport.libreoffice.org/stats/crash_details/a6b63eaa-ffe7-400e-8363-8c5dc665d59f

Since
commit 01b1e0f172c1912dac24337692d85a9caf637d9a
Author: Heiko Tietze 
Date:   Wed Mar 26 09:52:55 2025 +0100

Resolves tdf#84375 - Commands to protect image size and position

Change-Id: I75b7b82d369cad58e1e4ee0528be30399c9bb619
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197681
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sd/source/ui/view/ViewShellBase.cxx 
b/sd/source/ui/view/ViewShellBase.cxx
index e86685b35fda..2994a7f90aa1 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -679,9 +679,10 @@ void ViewShellBase::Execute (SfxRequest& rRequest)
 case SID_PROTECTSIZE:
 {
 ::sd::DrawDocShell* pDocSh = dynamic_cast< ::sd::DrawDocShell *>( 
SfxObjectShell::Current() );
-if (!pDocSh)
+::sd::ViewShell* pViewSh = pDocSh ? pDocSh->GetViewShell() : 
nullptr;
+::sd::View* pView = pViewSh ? pViewSh->GetView() : nullptr;
+if (!pView)
 break;
-::sd::View* pView = pDocSh->GetViewShell()->GetView();
 
 const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
 assert ( rMarkList.GetMarkCount() == 1 );
@@ -1458,9 +1459,10 @@ void ViewShellBase::Implementation::GetSlotState 
(SfxItemSet& rSet)
 case SID_PROTECTSIZE:
 {
 ::sd::DrawDocShell* pDocSh = 
dynamic_cast<::sd::DrawDocShell*>(SfxObjectShell::Current());
-if (pDocSh)
+::sd::ViewShell* pViewSh = pDocSh ? 
pDocSh->GetViewShell() : nullptr;
+::sd::View* pView = pViewSh ? pViewSh->GetView() : 
nullptr;
+if (pView)
 {
-::sd::View* pView = 
pDocSh->GetViewShell()->GetView();
 const SdrMarkList& rMarkList = 
pView->GetMarkedObjectList();
 if ( rMarkList.GetMarkCount() == 1 ) // graphic 
menu only effective on single item
 {


core.git: sd/source

2026-01-15 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |3 +++
 1 file changed, 3 insertions(+)

New commits:
commit e2b30525c3f024be6ddec2fd6509f37228b4b4c0
Author: Karthik Godha 
AuthorDate: Mon Dec 29 16:00:09 2025 +0530
Commit: Michael Stahl 
CommitDate: Thu Jan 15 16:45:26 2026 +0100

ODP -> PPTX: exporting invalid XML_by (CT_TLPoint)

XML_by inside XML_animScale can't contain any child elements. Its
schema is defined by CT_TLPoint (ISO-IEC-29500 19.5.21)

bug document: tdf112587-1.odp

Change-Id: I66169379fb0cf74a46e53f6b4474e0691e9da2f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196292
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit 2197e4abd2ba91a69292b5f633455aff9944848a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197329
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index da05c11dff0a..346ad6b01070 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -107,6 +107,9 @@ void WriteAnimationProperty(const FSHelperPtr& pFS, const 
Any& rAny, sal_Int32 n
 }
 return;
 }
+// If rAny is not a valid ValuePair and token is XML_by
+if (nToken == XML_by)
+return;
 
 sal_Int32 nRgb = {}; // spurious -Werror=maybe-uninitialized
 double fDouble = {}; // spurious -Werror=maybe-uninitialized


core.git: sd/source

2026-01-15 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-animations-nodectx.cxx |   21 +
 1 file changed, 21 insertions(+)

New commits:
commit 899a82001a484afd1817db52304f096e2ad4eb44
Author: Karthik Godha 
AuthorDate: Mon Dec 29 14:54:49 2025 +0530
Commit: Michael Stahl 
CommitDate: Thu Jan 15 16:44:55 2026 +0100

ODP -> PPTX: Skip childTnLst for invalid audio

childTnLst element can't be empty in PPTX export. For audio animations
we are exporting childTnLst even if the audio is invalid

bug document: tdf97809-1.odp

Change-Id: I7f4e19cb6541453e36fee8c63d0877ad62896a52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196279
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit 2b43b2f3ed790914740680b6cd02af962526fc8d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197331
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.cxx 
b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
index 11c9d8ed481f..2744cac56480 100644
--- a/sd/source/filter/eppt/pptx-animations-nodectx.cxx
+++ b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
@@ -23,6 +23,9 @@
 #include 
 #include 
 
+#include 
+#include 
+
 #include 
 #include 
 
@@ -35,6 +38,7 @@ using namespace ::com::sun::star::drawing;
 using namespace ::com::sun::star::container;
 using namespace ::com::sun::star::presentation;
 using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::io;
 
 namespace oox::core
 {
@@ -177,6 +181,23 @@ void NodeContext::initValid(bool bHasValidChild, bool 
bIsIterateChild)
 if (xAudio->getSource() >>= sURL)
 {
 mbValid = IsAudioURL(sURL);
+
+// Check whether URL is accessible
+try
+{
+if (!sURL.startsWith("vnd.sun.star.Package:"))
+{
+Reference xAudioStream;
+xAudioStream = 
comphelper::OStorageHelper::GetInputStreamFromURL(
+sURL, comphelper::getProcessComponentContext());
+mbValid = mbValid && xAudioStream.is();
+}
+}
+catch (const Exception&)
+{
+SAL_WARN("sd", "NodeContext::initValid, invalid audio");
+mbValid = false;
+}
 }
 else if (xAudio->getSource() >>= xShape)
 {


core.git: sd/source

2026-01-14 Thread Andrea Gelmini (via logerrit)
 sd/source/filter/eppt/pptx-epptbase.cxx |1 -
 1 file changed, 1 deletion(-)

New commits:
commit 441d035b394e37a512d79c6a89cbc236cc9e1eeb
Author: Andrea Gelmini 
AuthorDate: Mon Jan 12 23:03:48 2026 +0100
Commit: Julien Nabet 
CommitDate: Thu Jan 15 00:30:09 2026 +0100

Remove duplicated include

Change-Id: I15385b6e7aa5ac672f89a6d1b424dda122535c6a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197153
Tested-by: Jenkins
Reviewed-by: Julien Nabet 

diff --git a/sd/source/filter/eppt/pptx-epptbase.cxx 
b/sd/source/filter/eppt/pptx-epptbase.cxx
index 41fa16247e6a..dfbd16a0f0df 100644
--- a/sd/source/filter/eppt/pptx-epptbase.cxx
+++ b/sd/source/filter/eppt/pptx-epptbase.cxx
@@ -51,7 +51,6 @@
 #include 
 #include 
 #include 
-#include 
 
 using namespace com::sun::star;
 


core.git: sd/source

2026-01-13 Thread Mohit Marathe (via logerrit)
 sd/source/ui/view/drviews1.cxx |9 +
 1 file changed, 9 insertions(+)

New commits:
commit 17980fd213408341925455d454ec443e4734d8fe
Author: Mohit Marathe 
AuthorDate: Wed Dec 17 16:39:14 2025 +0530
Commit: Michael Stahl 
CommitDate: Tue Jan 13 21:05:21 2026 +0100

sd: change work area when switching to a differently sized page

This fixes the weird drag and drop behavior in canvas page where
the drop position was modified in `SdrExchangeView::ImpLimitToWorkArea`
due to outdated work area.

Signed-off-by: Mohit Marathe 
Change-Id: I28130119308331d50f1356a830f8bd5427f6cad3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195782
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196825
Tested-by: Jenkins

diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx
index 0ccfd2f5d50b..7c5756bdb6ca 100644
--- a/sd/source/ui/view/drviews1.cxx
+++ b/sd/source/ui/view/drviews1.cxx
@@ -1058,11 +1058,20 @@ bool DrawViewShell::SwitchPage(sal_uInt16 
nSelectedPage, bool bAllowChangeFocus,
 {
 Point aPageOrg(nNewWidth, nNewHeight / 2);
 Size aViewSize(nNewWidth * 3, nNewHeight * 2);
+Point aVisAreaPos;
 
 GetDoc()->SetMaxObjSize(aViewSize);
 
 InitWindows(aPageOrg, aViewSize, Point(-1, -1), true);
 
+if ( GetDocSh()->GetCreateMode() == 
SfxObjectCreateMode::EMBEDDED )
+{
+aVisAreaPos = 
GetDocSh()->GetVisArea(ASPECT_CONTENT).TopLeft();
+}
+if (mpDrawView)
+{
+mpDrawView->SetWorkArea(::tools::Rectangle(Point() - 
aVisAreaPos - aPageOrg, aViewSize));
+}
 // pSelectedPage->SetBackgroundFullSize(true);
 
 UpdateScrollBars();


core.git: sd/source

2026-01-13 Thread Mohit Marathe (via logerrit)
 sd/source/core/drawdoc.cxx |   82 ++---
 1 file changed, 56 insertions(+), 26 deletions(-)

New commits:
commit a1f3108cae0b5d592bd1c2d6aee78ac4f70e595f
Author: Mohit Marathe 
AuthorDate: Sat Jan 10 13:26:51 2026 +0530
Commit: Michael Stahl 
CommitDate: Tue Jan 13 19:52:54 2026 +0100

tdf#170277 sd: allow setting different page size of a master page directly

Earlier it was only possible to do this via resizing a normal page.

Signed-off-by: Mohit Marathe 
Change-Id: I93a3b8a57258c5fdbc234d613b6e5d1f3425af7b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196952
Tested-by: Jenkins
Reviewed-by: Michael Stahl 

diff --git a/sd/source/core/drawdoc.cxx b/sd/source/core/drawdoc.cxx
index cdbc3985aff8..db764cbd26b9 100644
--- a/sd/source/core/drawdoc.cxx
+++ b/sd/source/core/drawdoc.cxx
@@ -467,26 +467,31 @@ void SdDrawDocument::ResizeCurrentPage(
 
 // TODO: handle undo action for new master page creation
 
-SdPage* pMasterPage = static_cast(&pPage->TRG_GetMasterPage());
+bool bIsMasterPage = pPage->IsMasterPage();
 
-// Count how many pages uses pMasterPage
-sal_uInt16 nCount = 0;
-for (sal_uInt16 i = 0; i < nPageCnt && nCount <= 1; i++)
+SdPage* pMasterPage = bIsMasterPage ? pPage : 
static_cast(&pPage->TRG_GetMasterPage());
+
+if (!bIsMasterPage)
 {
-SdPage* pDrawPage = GetSdPage(i, ePageKind);
-if (pDrawPage->TRG_HasMasterPage() &&
-static_cast(&pDrawPage->TRG_GetMasterPage()) == 
pMasterPage)
+// Count how many pages uses pMasterPage
+sal_uInt16 nCount = 0;
+for (sal_uInt16 i = 0; i < nPageCnt && nCount <= 1; i++)
 {
-nCount++;
+SdPage* pDrawPage = GetSdPage(i, ePageKind);
+if (pDrawPage->TRG_HasMasterPage() &&
+static_cast(&pDrawPage->TRG_GetMasterPage()) == 
pMasterPage)
+{
+nCount++;
+}
 }
-}
 
-// If pMasterPage is used by other pages, create a new master page
-if (nCount > 1)
-{
-SdPage* pNewMasterPage = AddNewMasterPageFromExisting(pMasterPage);
-pPage->TRG_SetMasterPage(static_cast(*pNewMasterPage));
-pMasterPage = pNewMasterPage;
+// If pMasterPage is used by other pages, create a new master page
+if (nCount > 1)
+{
+SdPage* pNewMasterPage = AddNewMasterPageFromExisting(pMasterPage);
+pPage->TRG_SetMasterPage(static_cast(*pNewMasterPage));
+pMasterPage = pNewMasterPage;
+}
 }
 
 AdaptPageSize(pMasterPage,
@@ -506,17 +511,42 @@ void SdDrawDocument::ResizeCurrentPage(
 // GetMasterSdPage(i, PageKind::Notes)->CreateTitleAndLayout();
 // }
 
-AdaptPageSize(pPage,
-  rNewSize,
-  pUndoGroup,
-  nLeft,
-  nRight,
-  nUpper,
-  nLower,
-  bScaleAll,
-  eOrientation,
-  nPaperBin,
-  bBackgroundFullSize);
+if (!bIsMasterPage)
+{
+AdaptPageSize(pPage,
+  rNewSize,
+  pUndoGroup,
+  nLeft,
+  nRight,
+  nUpper,
+  nLower,
+  bScaleAll,
+  eOrientation,
+  nPaperBin,
+  bBackgroundFullSize);
+}
+else
+{
+for (sal_uInt16 i = 0; i < nPageCnt; i++)
+{
+SdPage* pDrawPage = GetSdPage(i, ePageKind);
+if (pDrawPage->TRG_HasMasterPage() &&
+static_cast(&pDrawPage->TRG_GetMasterPage()) == pPage)
+{
+AdaptPageSize(pDrawPage,
+  rNewSize,
+  pUndoGroup,
+  nLeft,
+  nRight,
+  nUpper,
+  nLower,
+  bScaleAll,
+  eOrientation,
+  nPaperBin,
+  bBackgroundFullSize);
+}
+}
+}
 
 // if ( ePageKind == PageKind::Standard )
 // {


core.git: sd/source

2026-01-12 Thread Mohit Marathe (via logerrit)
 sd/source/core/drawdoc2.cxx |   32 ++--
 sd/source/filter/eppt/pptx-epptbase.cxx |6 ---
 sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx |   32 +++-
 sd/source/ui/view/ViewClipboard.cxx |4 +-
 4 files changed, 38 insertions(+), 36 deletions(-)

New commits:
commit bb09b02b2d93ba804dd36ccdb4abd589869336de
Author: Mohit Marathe 
AuthorDate: Fri Nov 28 17:03:59 2025 +0530
Commit: Michael Stahl 
CommitDate: Mon Jan 12 19:29:45 2026 +0100

sd: make sure canvas page remains as the first page

also reverts 7f5c359ab120ec89af04e2f9cbaee387c30662fb

Signed-off-by: Mohit Marathe 
Change-Id: I61a3b9baa5e592a662e137b56afeaebc0c855c4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194773
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196808
Tested-by: Jenkins

diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx
index c15c69f7d31b..d5c5998b7d14 100644
--- a/sd/source/core/drawdoc2.cxx
+++ b/sd/source/core/drawdoc2.cxx
@@ -433,6 +433,13 @@ void SdDrawDocument::UpdatePageRelativeURLs(SdPage const * 
pPage, sal_uInt16 nPo
 // Move page
 void SdDrawDocument::MovePage(sal_uInt16 nPgNum, sal_uInt16 nNewPos)
 {
+if (HasCanvasPage())
+{
+if (nPgNum == 1)
+return;
+if (nNewPos == 1)
+nNewPos = 3;
+}
 FmFormModel::MovePage(nPgNum, nNewPos);
 
 sal_uInt16 nMin = std::min(nPgNum, nNewPos);
@@ -1494,10 +1501,8 @@ bool SdDrawDocument::ValidateCanvasPage(const SdPage* 
pPage) const
 
 void SdDrawDocument::ImportCanvasPage()
 {
-sal_uInt16 nStdPageCnt = GetSdPageCount(PageKind::Standard);
-
-// what if canvas page is not the last page?
-SdPage* pPage = GetSdPage(nStdPageCnt - 1, PageKind::Standard);
+// what if canvas page is not the first page?
+SdPage* pPage = GetSdPage(0, PageKind::Standard);
 bool bIsCanvasPageValid = ValidateCanvasPage(pPage);
 pPage->SetCanvasPage();
 mpCanvasPage = pPage;
@@ -1582,7 +1587,7 @@ void SdDrawDocument::ReshufflePages()
 {
 SdPage* pPage = 
static_cast(aPageOrder[i]->GetReferencedPage());
 sal_uInt16 nCurrentPageNum = pPage->GetPageNum();
-sal_uInt16 nTargetPageNum = 2 * i + 1;
+sal_uInt16 nTargetPageNum = 2 * (i + 1) + 1;
 MovePage(nCurrentPageNum, nTargetPageNum); // Standard page
 MovePage(nCurrentPageNum + 1, nTargetPageNum + 1); // Notes page
 }
@@ -1597,15 +1602,20 @@ sal_uInt16 SdDrawDocument::GetOrInsertCanvasPage()
 sal_uInt16 nLastPageNum = GetSdPageCount(PageKind::Standard);
 SdPage* pLastStandardPage = GetSdPage(nLastPageNum - 1, 
PageKind::Standard);
 
-sal_uInt16 nCanvasPageNum = CreatePage(pLastStandardPage, 
PageKind::Standard,
+sal_uInt16 nCanvasPageIndex = CreatePage(pLastStandardPage, 
PageKind::Standard,
u"Canvas Page"_ustr, u"Canvas notes 
page"_ustr,
AutoLayout::AUTOLAYOUT_NONE, 
AutoLayout::AUTOLAYOUT_NONE,
false, false, 
pLastStandardPage->GetPageNum() + 2);
 
-SdPage* pCanvasPage = GetSdPage(nCanvasPageNum, PageKind::Standard);
+SdPage* pCanvasPage = GetSdPage(nCanvasPageIndex, PageKind::Standard);
 if (!pCanvasPage)
 return 0x;
 
+// move the canvas page to the top
+sal_uInt16 nCanvasPageNum = 2 * nCanvasPageIndex + 1;
+MovePage(nCanvasPageNum, 1); // Canvas page
+MovePage(nCanvasPageNum + 1, 2); // Canvas notes page
+
 const Size aCanvasSize(50, 50);
 
 ResizeCurrentPage(pCanvasPage, aCanvasSize, PageKind::Standard);
@@ -1641,9 +1651,9 @@ static int calculateGridColumns(const sal_uInt16 nCnt)
 
 void SdDrawDocument::populatePagePreviewsGrid()
 {
-sal_uInt16 nPageCnt = GetSdPageCount(PageKind::Standard) - 1; // don't 
count the canvas page
-sal_uInt16 nTotalCol = 
static_cast(calculateGridColumns(nPageCnt));
-sal_uInt16 nTotalRow = nPageCnt / nTotalCol + (nPageCnt % nTotalCol ? 1 : 
0);
+sal_uInt16 nPageCnt = GetSdPageCount(PageKind::Standard);
+sal_uInt16 nTotalCol = 
static_cast(calculateGridColumns(nPageCnt - 1));
+sal_uInt16 nTotalRow = (nPageCnt - 1) / nTotalCol + ((nPageCnt - 1) % 
nTotalCol ? 1 : 0);
 
 // width and height of a standard 16:9 page
 sal_uInt16 nWidth = 28000;
@@ -1679,7 +1689,7 @@ void SdDrawDocument::populatePagePreviewsGrid()
 ::tools::Long nX = (mpCanvasPage->GetWidth() - nTotalGridWidth) / 2;
 for (sal_uInt16 nCol = 0; nCol < nTotalCol; nCol++)
 {
-sal_uInt16 nCurrentPageIndex = nTotalCol * nRow + nCol;
+sal_uInt16 nCurrentPageIndex = nTotalCol * nRow + nCol + 1;
 if (nCurrentPageIndex == nPageCnt)
 return;
 SdPage* pPage = GetSdPage(nCurre

core.git: sd/source

2026-01-12 Thread Mohit Marathe (via logerrit)
 sd/source/filter/eppt/pptx-epptbase.cxx |9 +
 1 file changed, 9 insertions(+)

New commits:
commit 1098e5d948f93cb3541dde9652324f6fd911d79f
Author: Mohit Marathe 
AuthorDate: Tue Nov 25 15:52:53 2025 +0530
Commit: Michael Stahl 
CommitDate: Mon Jan 12 19:29:01 2026 +0100

sd: do not export canvas slide to pptx

by decreasing the page count by 1. As the canvas page and its notes page
is always at the end, `PPTWriterBase::CreateSlide` and 
`PPTWriterBase::CreateNotes`
won't be called for them.

The same cannot be done for the master canvas page as its not
necessarily the last master page. Since that master page will be unused,
it is safe to export that.

Signed-off-by: Mohit Marathe 
Change-Id: Ie24f594d45c08a99548363cc1e20cfff977ce519
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194521
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
Code-Style: Michael Stahl 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196807
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-epptbase.cxx 
b/sd/source/filter/eppt/pptx-epptbase.cxx
index b1eb2675b944..06589c35561f 100644
--- a/sd/source/filter/eppt/pptx-epptbase.cxx
+++ b/sd/source/filter/eppt/pptx-epptbase.cxx
@@ -17,9 +17,12 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include 
+#include 
 #include "epptbase.hxx"
 #include "epptdef.hxx"
 #include "../ppt/pptanimations.hxx"
+#include 
 
 #include 
 #include 
@@ -231,6 +234,12 @@ bool PPTWriterBase::InitSOIface()
 if ( !GetPageByIndex( 0, NORMAL ) )
 break;
 
+if (mXModel.is())
+{
+SdDrawDocument* pDoc = mXModel->GetDoc();
+if (pDoc && pDoc->HasCanvasPage())
+mnPages--;
+}
 return true;
 }
 return false;


core.git: sd/source

2026-01-12 Thread Mohit Marathe (via logerrit)
 sd/source/core/drawdoc2.cxx |1 +
 1 file changed, 1 insertion(+)

New commits:
commit 72f36f48525fe760cafbf67da2684e25047bd7ff
Author: Mohit Marathe 
AuthorDate: Fri Nov 14 17:20:53 2025 +0530
Commit: Michael Stahl 
CommitDate: Mon Jan 12 19:25:42 2026 +0100

sd: increment iterator to fix infinite loop

Signed-off-by: Mohit Marathe 
Change-Id: I6621f5dd73cc3d1d5a934180960852a664f610e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194024
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196800
Reviewed-by: Michael Stahl 
Tested-by: Jenkins

diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx
index bef7d40cc20f..623c413fe60e 100644
--- a/sd/source/core/drawdoc2.cxx
+++ b/sd/source/core/drawdoc2.cxx
@@ -1532,6 +1532,7 @@ void SdDrawDocument::ReshufflePages()
 
 return bIsRTL ? (xCenter1 > xCenter2) : (xCenter1 < xCenter2);
 });
+rowStart = rowEnd;
 }
 
 for (size_t i = 0; i < aPageOrder.size(); i++)


core.git: sd/source

2026-01-12 Thread Michael Stahl (via logerrit)
 sd/source/core/sdpage.cxx |1 -
 1 file changed, 1 deletion(-)

New commits:
commit 148ce16629434d58bd7f8cf1374500157e42e840
Author: Michael Stahl 
AuthorDate: Mon Jan 12 19:24:12 2026 +0100
Commit: Michael Stahl 
CommitDate: Mon Jan 12 19:24:24 2026 +0100

Revert "cid#1680311 Uninitialized scalar field"

This reverts commit 9b5c39d3b01f4364570d74aaf51aa8d115e3d7f0.

Reason for revert: causes merge conflict, will be fixed anyway

Change-Id: I5d4adc6806e0da9dd875516eb2d695ea5a8ddf87
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197135
Tested-by: Michael Stahl 
Reviewed-by: Michael Stahl 

diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 4e8a56233405..1918e12b2827 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -122,7 +122,6 @@ SdPage::SdPage(SdDrawDocument& rNewDoc, bool bMasterPage)
 ,   meCharSet(osl_getThreadTextEncoding())
 ,   mnPaperBin(PAPERBIN_PRINTER_SETTINGS)
 ,   mpPageLink(nullptr)
-,   mbIsCanvasPage(false)
 ,   mnTransitionType(0)
 ,   mnTransitionSubtype(0)
 ,   mbTransitionDirection(true)


core.git: sd/source

2026-01-12 Thread Mohit Marathe (via logerrit)
 sd/source/ui/sidebar/SlideBackground.cxx |1 +
 1 file changed, 1 insertion(+)

New commits:
commit c4248817db11554234b00354fa9c4ebbc879b127
Author: Mohit Marathe 
AuthorDate: Wed Nov 5 17:18:20 2025 +0530
Commit: Michael Stahl 
CommitDate: Mon Jan 12 19:14:18 2026 +0100

sd: update Format combobox on switching to a different sized page

Signed-off-by: Mohit Marathe 
Change-Id: I930d2e1d26609b31dcc32ca6630e89b24bbcaa18
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193458
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196796
Tested-by: Jenkins

diff --git a/sd/source/ui/sidebar/SlideBackground.cxx 
b/sd/source/ui/sidebar/SlideBackground.cxx
index eaa2aa179613..7a9b0ef6f34f 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -698,6 +698,7 @@ void SlideBackground::updatePaperSizeBoxSelection()
 Paper ePaper = SvxPaperInfo::GetSvxPaper(pPage->GetSize(), 
MapUnit::Map100thMM);
 mxPaperSizeBox->set_active_id(ePaper);
 }
+GetBindings()->Invalidate(SID_ATTR_PAGE_SIZE);
 }
 
 SlideBackground::~SlideBackground()


core.git: sd/source slideshow/source

2026-01-08 Thread Tor Lillqvist (via logerrit)
 sd/source/ui/inc/View.hxx |4 
 slideshow/source/engine/shapes/viewmediashape.cxx |5 +
 2 files changed, 9 insertions(+)

New commits:
commit 1238770c7b462fd26840904c7e601a5b5b289cb2
Author: Tor Lillqvist 
AuthorDate: Wed Oct 9 14:45:47 2024 +0300
Commit: Tor Lillqvist 
CommitDate: Thu Jan 8 12:33:43 2026 +0100

Put mxDropMediaSizeListener inside HAVE_FEATURE_AVMEDIA

Also another compilation fix for !HAVE_FEATURE_AVMEDIA.

Change-Id: I442d81f4817fbd28ff04e91c1503f947890007fc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194559
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Tomaž Vajngerl 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196671
Reviewed-by: Tor Lillqvist 
Tested-by: Jenkins

diff --git a/sd/source/ui/inc/View.hxx b/sd/source/ui/inc/View.hxx
index 95feac17807d..ccdadc43094e 100644
--- a/sd/source/ui/inc/View.hxx
+++ b/sd/source/ui/inc/View.hxx
@@ -19,6 +19,8 @@
 
 #pragma once
 
+#include 
+
 #include 
 #include 
 #include 
@@ -268,7 +270,9 @@ protected:
 sal_Int8mnAction;
 IdlemaDropErrorIdle;
 IdlemaDropInsertFileIdle;
+#if HAVE_FEATURE_AVMEDIA
 rtl::Reference mxDropMediaSizeListener;
+#endif
 sal_uInt16  mnLockRedrawSmph;
 boolmbIsDropAllowed;
 
diff --git a/slideshow/source/engine/shapes/viewmediashape.cxx 
b/slideshow/source/engine/shapes/viewmediashape.cxx
index 310bc42800ca..f50350b53ed4 100644
--- a/slideshow/source/engine/shapes/viewmediashape.cxx
+++ b/slideshow/source/engine/shapes/viewmediashape.cxx
@@ -406,6 +406,10 @@ namespace slideshow::internal
 void ViewMediaShape::implInitializePlayerWindow( const 
::basegfx::B2DRectangle&   rBounds,
  const 
uno::Sequence< uno::Any >& rVCLDeviceParams )
 {
+#if !HAVE_FEATURE_AVMEDIA
+(void) rBounds;
+(void) rVCLDeviceParams;
+#else
 SAL_INFO("slideshow", "ViewMediaShape::implInitializePlayerWindow" 
);
 if( mpMediaWindow || rBounds.isEmpty() )
 return;
@@ -508,6 +512,7 @@ namespace slideshow::internal
 {
 TOOLS_WARN_EXCEPTION( "slideshow", "" );
 }
+#endif
 }
 }
 


core.git: sd/source svx/source

2026-01-07 Thread Balazs Varga (via logerrit)
 sd/source/ui/view/sdview3.cxx |3 +--
 svx/source/svdraw/svdundo.cxx |   12 
 2 files changed, 5 insertions(+), 10 deletions(-)

New commits:
commit b10b28b6575b387ea4a7a0b91283690610158a2a
Author: Balazs Varga 
AuthorDate: Wed Jan 7 08:29:26 2026 +0100
Commit: Balazs Varga 
CommitDate: Wed Jan 7 15:50:03 2026 +0100

Related tdf#170027 - Crash when undoing shape drag with Alt pressed

Partly revert and follow up of 0dc03683f9536123327963c170203addb8408930
Since the shape names can be empty, better to not check the two shape
names, otherwise the Alt drag will not work with those shapes. Since
the alt draged shape is cloned, so a new shape was created, nothing else
can be checked that the cloned and the original shape is the same or
not. So just avoid crash at undo for the moment.

Change-Id: I6cb86d776ddc9643919b9399bb2987b19d8bccf6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196655
Tested-by: Jenkins
Tested-by: Gabor Kelemen 
Reviewed-by: Balazs Varga 

diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index fe66f97a3b12..6d3bc7e4d519 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -764,7 +764,7 @@ bool View::InsertData( const TransferableDataHelper& 
rDataHelper,
 SdrPageView*pPV = nullptr;
 SdrObject* pPickObj2 = PickObj(rPos, getHitTolLog(), 
pPV);
 
-if( ( mnAction & DND_ACTION_MOVE ) && pPickObj2 && 
pObj && pPickObj2->GetName() != pObj->GetName() )
+if( ( mnAction & DND_ACTION_MOVE ) && pPickObj2 && 
pObj )
 {
 // replace object
 SdrPage* pWorkPage = GetSdrPageView()->GetPage();
@@ -804,7 +804,6 @@ bool View::InsertData( const TransferableDataHelper& 
rDataHelper,
 mnAction = DND_ACTION_COPY;
 }
 else if( ( mnAction & DND_ACTION_LINK ) && pPickObj2 
&& pObj &&
-pPickObj2->GetName() != pObj->GetName() &&
 dynamic_cast< const SdrGrafObj *>( pPickObj2 ) ==  
nullptr &&
 dynamic_cast< const SdrOle2Obj *>( pPickObj2 ) 
==  nullptr )
 {
diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx
index cc6de3fe1d5c..e64cb643b202 100644
--- a/svx/source/svdraw/svdundo.cxx
+++ b/svx/source/svdraw/svdundo.cxx
@@ -695,7 +695,7 @@ void SdrUndoRemoveObj::Undo()
 ImpShowPageOfThisObject();
 
 DBG_ASSERT(!mxObj->IsInserted(),"UndoRemoveObj: mxObj has already been 
inserted.");
-if (mxObj->IsInserted())
+if (mxObj->IsInserted() || !pObjList)
 return;
 
 // #i11426#
@@ -703,7 +703,6 @@ void SdrUndoRemoveObj::Undo()
 // position of the target object.
 Point aOwnerAnchorPos(0, 0);
 
-assert(pObjList); // must never be null
 if (dynamic_cast< const SdrObjGroup* 
>(pObjList->getSdrObjectFromSdrObjList()) != nullptr)
 {
 aOwnerAnchorPos = 
pObjList->getSdrObjectFromSdrObjList()->GetAnchorPos();
@@ -722,11 +721,10 @@ void SdrUndoRemoveObj::Undo()
 void SdrUndoRemoveObj::Redo()
 {
 DBG_ASSERT(mxObj->IsInserted(),"RedoRemoveObj: mxObj is not inserted.");
-if (mxObj->IsInserted())
+if (mxObj->IsInserted() && pObjList)
 {
 ImplUnmarkObject( mxObj.get() );
 E3DModifySceneSnapRectUpdater aUpdater(mxObj.get());
-assert(pObjList); // must never be null
 pObjList->RemoveObject(mxObj->GetOrdNum());
 }
 
@@ -745,11 +743,10 @@ void SdrUndoInsertObj::Undo()
 ImpShowPageOfThisObject();
 
 DBG_ASSERT(mxObj->IsInserted(),"UndoInsertObj: mxObj is not inserted.");
-if (mxObj->IsInserted())
+if (mxObj->IsInserted() && pObjList)
 {
 ImplUnmarkObject( mxObj.get() );
 
-assert(pObjList); // must never be null
 rtl::Reference pChkObj= 
pObjList->RemoveObject(mxObj->GetOrdNum());
 DBG_ASSERT(pChkObj.get()==mxObj.get(),"UndoInsertObj: 
RemoveObjNum!=mxObj");
 }
@@ -758,14 +755,13 @@ void SdrUndoInsertObj::Undo()
 void SdrUndoInsertObj::Redo()
 {
 DBG_ASSERT(!mxObj->IsInserted(),"RedoInsertObj: mxObj is already 
inserted");
-if (!mxObj->IsInserted())
+if (!mxObj->IsInserted() && pObjList)
 {
 // Restore anchor position of an object,
 // which becomes a member of a group, because its cleared in method
 // . Needed for correct Redo in Writer. (#i45952#)
 Point aAnchorPos( 0, 0 );
 
-assert(pObjList); // must never be null
 if (dynamic_cast(pObjList->getSdrObjectFromSdrObjList()) != nullptr)
 {
 aAnchorPos = mxObj->GetAnchorPos();


core.git: sd/source

2026-01-07 Thread Mohit Marathe (via logerrit)
 sd/source/ui/sidebar/SlideBackground.cxx |   12 
 sd/source/ui/sidebar/SlideBackground.hxx |1 +
 2 files changed, 13 insertions(+)

New commits:
commit be3da73b9117bb94be779bfaaf25cb8e66182405
Author: Mohit Marathe 
AuthorDate: Tue Oct 7 16:06:15 2025 +0530
Commit: Mohit Marathe 
CommitDate: Wed Jan 7 15:06:19 2026 +0100

sd: update Format combobox selection upon page change

Signed-off-by: Mohit Marathe 
Change-Id: I662f86e8a58845be688fe95825f2673c0532e1a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192059
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit 0fac2a731ef2d33f4909c62d80f3274863ada3c1)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196656
Tested-by: Jenkins

diff --git a/sd/source/ui/sidebar/SlideBackground.cxx 
b/sd/source/ui/sidebar/SlideBackground.cxx
index a7474d63cd30..eaa2aa179613 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -611,6 +611,7 @@ IMPL_LINK(SlideBackground, EventMultiplexerListener,
 SID_DISPLAY_MASTER_OBJECTS,
 0 };
 updateMasterSlideSelection();
+updatePaperSizeBoxSelection();
 GetBindings()->Invalidate( SidArray );
 }
 break;
@@ -688,6 +689,17 @@ void SlideBackground::updateMasterSlideSelection()
 }
 }
 
+void SlideBackground::updatePaperSizeBoxSelection()
+{
+ViewShell* pMainViewShell = mrBase.GetMainViewShell().get();
+SdPage* pPage = pMainViewShell ? pMainViewShell->getCurrentPage() : 
nullptr;
+if (pPage != nullptr)
+{
+Paper ePaper = SvxPaperInfo::GetSvxPaper(pPage->GetSize(), 
MapUnit::Map100thMM);
+mxPaperSizeBox->set_active_id(ePaper);
+}
+}
+
 SlideBackground::~SlideBackground()
 {
 removeListener();
diff --git a/sd/source/ui/sidebar/SlideBackground.hxx 
b/sd/source/ui/sidebar/SlideBackground.hxx
index 6dd7232ce4e3..bd0b5ce4be84 100644
--- a/sd/source/ui/sidebar/SlideBackground.hxx
+++ b/sd/source/ui/sidebar/SlideBackground.hxx
@@ -173,6 +173,7 @@ private:
 void ExecuteMarginULChange(const ::tools::Long mnPageTopMargin, const 
::tools::Long mnPageBottomMargin);
 void populateMasterSlideDropdown();
 void updateMasterSlideSelection();
+void updatePaperSizeBoxSelection();
 
 static FieldUnit GetCurrentUnit(SfxItemState eState, const SfxPoolItem* 
pState);
 


core.git: sd/source

2026-01-06 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-animations-nodectx.cxx |   13 -
 sd/source/filter/eppt/pptx-animations-nodectx.hxx |5 -
 sd/source/filter/eppt/pptx-animations.cxx |   21 -
 3 files changed, 32 insertions(+), 7 deletions(-)

New commits:
commit cba6535198dfdf8aa307f695cb88bcbab977c0bc
Author: Karthik Godha 
AuthorDate: Wed Dec 10 21:39:49 2025 +0530
Commit: Michael Stahl 
CommitDate: Tue Jan 6 19:06:40 2026 +0100

tdf#169924: ODP -> PPTX export invalid animations

When exporting animations in a slide, animations attached to
shapes which are not in the slide are also being exported.

Change-Id: I2dbc5cd5755ce6656a9fc2efa453c5837ffeaa6a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195391
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit 30d71445d40904fd7c47639575e3f7ffa499dcad)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196541
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.cxx 
b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
index 0e3c2ee3d4d5..11c9d8ed481f 100644
--- a/sd/source/filter/eppt/pptx-animations-nodectx.cxx
+++ b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
@@ -83,10 +83,12 @@ bool initCondList(const Any& rAny, std::vector& 
rList, bool bIsMainSeqChil
 }
 }
 
-NodeContext::NodeContext(const Reference& xNode, 
PowerPointExport& rExport,
- bool bMainSeqChild, bool bIsIterateChild)
+NodeContext::NodeContext(const Reference& xNode,
+ const std::unordered_set& rSlideShapeIDs,
+ PowerPointExport& rExport, bool bMainSeqChild, bool 
bIsIterateChild)
 : mxNode(xNode)
 , mbValid(true)
+, mrSlideShapeIDs(rSlideShapeIDs)
 , mrPowerPointExport(rExport)
 , mbOnSubTnLst(false)
 , mnEffectNodeType(-1)
@@ -111,7 +113,7 @@ bool NodeContext::isValidTarget(const Any& rTarget)
 Reference xShape;
 
 if ((rTarget >>= xShape) && 
drawingml::ShapeExport::IsShapeTypeKnown(xShape)
-&& (mrPowerPointExport.GetShapeID(xShape) != -1))
+&& (mrSlideShapeIDs.find(mrPowerPointExport.GetShapeID(xShape)) != 
mrSlideShapeIDs.end()))
 return true;
 
 ParagraphTarget aParagraphTarget;
@@ -216,8 +218,9 @@ bool NodeContext::initChildNodes()
 Reference 
xChildNode(xEnumeration->nextElement(), UNO_QUERY);
 if (xChildNode.is())
 {
-auto pChildContext = std::make_unique(
-xChildNode, mrPowerPointExport, bIsMainSeq, 
bIsIterateChild);
+auto pChildContext = 
std::make_unique(xChildNode, mrSlideShapeIDs,
+   
mrPowerPointExport,
+   
bIsMainSeq, bIsIterateChild);
 if (pChildContext->isValid())
 bValid = true;
 maChildNodes.push_back(std::move(pChildContext));
diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.hxx 
b/sd/source/filter/eppt/pptx-animations-nodectx.hxx
index 1830845ea5da..865c23715b60 100644
--- a/sd/source/filter/eppt/pptx-animations-nodectx.hxx
+++ b/sd/source/filter/eppt/pptx-animations-nodectx.hxx
@@ -10,6 +10,7 @@
 
 #include 
 #include 
+#include 
 #include 
 #include "epptooxml.hxx"
 #include "pptx-animations-cond.hxx"
@@ -30,6 +31,7 @@ class NodeContext
 // if the node has valid target or contains at least one valid target.
 bool mbValid;
 // Required to check if the associated shape is present in export or not
+const std::unordered_set& mrSlideShapeIDs;
 PowerPointExport& mrPowerPointExport;
 
 // if the node should be on SubTnLst or ChildTnLst
@@ -55,7 +57,8 @@ class NodeContext
 
 public:
 NodeContext(const css::uno::Reference& 
xNode,
-PowerPointExport& rExport, bool bMainSeqChild, bool 
bIsIterateChild);
+const std::unordered_set& rSlideShapeIDs, 
PowerPointExport& rExport,
+bool bMainSeqChild, bool bIsIterateChild);
 const css::uno::Reference& getNode() 
const { return mxNode; }
 sal_Int16 getEffectNodeType() const { return mnEffectNodeType; }
 sal_Int16 getEffectPresetClass() const { return mnEffectPresetClass; }
diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index 10b6fbc6211f..da05c11dff0a 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -25,6 +25,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -53,6 +54,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -76,6 +78,7 @@ using namespace oox;
 using ::com::sun::star::beans::NamedValue;
 using ::com::sun::star::drawing::XDrawPage;
 using ::com::sun::star::drawing::XShape;
+us

core.git: sd/source

2026-01-06 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |8 ++--
 1 file changed, 2 insertions(+), 6 deletions(-)

New commits:
commit 3a933c3af6c82eef9cbb88cfc4040ab94ebb9de0
Author: Karthik Godha 
AuthorDate: Wed Dec 17 10:33:56 2025 +0530
Commit: Michael Stahl 
CommitDate: Tue Jan 6 19:05:24 2026 +0100

ODP -> PPTX export empty attrName element

In OOXML export attrNameLst must contain at least one attrName element.
Export of attrName is skipped if it's empty, this results in invalid
schema. (ISO-IEC-29500 19.5.8)

bug-file: ooo72169-1.odp

Change-Id: I8ebf2b9752fc9e90c21339d7d9dd3507e2518fc9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195758
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit 3f5d0e1425305507bf545c58d1ade11059960005)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196544
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index 3890e392d2aa..10b6fbc6211f 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -296,16 +296,12 @@ void WriteAnimationAttributeName(const FSHelperPtr& pFS, 
const OUString& rAttrib
 attrConv++;
 }
 
+pFS->startElementNS(XML_p, XML_attrName);
 if (pAttribute)
-{
-pFS->startElementNS(XML_p, XML_attrName);
 pFS->writeEscaped(pAttribute);
-pFS->endElementNS(XML_p, XML_attrName);
-}
 else
-{
 SAL_WARN("sd.eppt", "unhandled animation attribute name: " << 
rAttributeName);
-}
+pFS->endElementNS(XML_p, XML_attrName);
 }
 
 pFS->endElementNS(XML_p, XML_attrNameLst);


core.git: sd/source

2026-01-02 Thread Aron Budea (via logerrit)
 sd/source/filter/eppt/pptx-animations-nodectx.cxx |5 +
 sd/source/filter/eppt/pptx-animations.cxx |   14 ++
 2 files changed, 7 insertions(+), 12 deletions(-)

New commits:
commit f3943837d75695bc351a55340addd362de33097b
Author: Aron Budea 
AuthorDate: Fri Jan 2 21:50:24 2026 +1100
Commit: Aron Budea 
CommitDate: Sat Jan 3 03:05:19 2026 +0100

tdf#170202 avoid exporting ANIMATIONPHYSICS node types

Implement cbf102d4c1ba73519b49df0d43a87ebdf9267538 differently.

After previous commit, tdf136301-1.odp still contained
animation elements in slide1.xml when converted to PPTX, and
couldn't be opened in PP.

Set such nodes invalid instead to avoid processing them at all.

Change-Id: I799026c389681b89792bb9765b8f81562743deb4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196424
Reviewed-by: Aron Budea 
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.cxx 
b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
index af843d661b69..0e3c2ee3d4d5 100644
--- a/sd/source/filter/eppt/pptx-animations-nodectx.cxx
+++ b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
@@ -188,6 +188,11 @@ void NodeContext::initValid(bool bHasValidChild, bool 
bIsIterateChild)
 }
 }
 }
+else if (nType == AnimationNodeType::ANIMATEPHYSICS)
+{
+// Ignore: we don't support exporting this node type
+mbValid = false;
+}
 else
 {
 Reference xAnimate(mxNode, UNO_QUERY);
diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index bbae2b29682c..3890e392d2aa 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -951,28 +951,18 @@ void 
PPTXAnimationExport::WriteAnimationNodeCommonPropsStart()
 if (!aChildNodes.empty())
 {
 bool bSubTnLst = false;
-bool bWroteChildTnList = false;
+mpFS->startElementNS(XML_p, XML_childTnLst);
 for (const NodeContextPtr& pChildContext : aChildNodes)
 {
 if (pChildContext->isValid())
 {
 if (pChildContext->isOnSubTnLst())
 bSubTnLst = true;
-else if (pChildContext->getNode()->getType() == 
AnimationNodeType::ANIMATEPHYSICS)
-; // ignore we don't support exporting this node type
 else
-{
-if (!bWroteChildTnList)
-{
-bWroteChildTnList = true;
-mpFS->startElementNS(XML_p, XML_childTnLst);
-}
 WriteAnimationNode(pChildContext);
-}
 }
 }
-if (bWroteChildTnList)
-mpFS->endElementNS(XML_p, XML_childTnLst);
+mpFS->endElementNS(XML_p, XML_childTnLst);
 
 if (bSubTnLst)
 {


core.git: sd/source

2026-01-02 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-animations-nodectx.cxx |   34 +++---
 sd/source/filter/eppt/pptx-animations-nodectx.hxx |7 +++-
 sd/source/filter/eppt/pptx-animations.cxx |2 -
 3 files changed, 25 insertions(+), 18 deletions(-)

New commits:
commit d64f3e812bd6929b62d8c00b60b460aed2bf8e84
Author: Karthik Godha 
AuthorDate: Tue Dec 9 20:05:53 2025 +0530
Commit: Michael Stahl 
CommitDate: Fri Jan 2 13:53:50 2026 +0100

tdf#169911: ODP -> PPTX export invalid animations

Empty/invalid OLE objects are skipped PPTX export, but animations
attached to these OLE objects are exported.

Add the slide itself as target for these animations

Change-Id: I1e594d607cc37f58c0e56357f8f8d42d9139bec8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195306
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit 064e42a069c9186919086904ced3100960bafb41)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196156
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.cxx 
b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
index 07c8bd618f78..af843d661b69 100644
--- a/sd/source/filter/eppt/pptx-animations-nodectx.cxx
+++ b/sd/source/filter/eppt/pptx-animations-nodectx.cxx
@@ -40,18 +40,6 @@ namespace oox::core
 {
 namespace
 {
-bool isValidTarget(const Any& rTarget)
-{
-Reference xShape;
-
-if ((rTarget >>= xShape) && 
drawingml::ShapeExport::IsShapeTypeKnown(xShape))
-return true;
-
-ParagraphTarget aParagraphTarget;
-
-return (rTarget >>= aParagraphTarget) && aParagraphTarget.Shape.is();
-}
-
 bool IsAudioURL(std::u16string_view rURL)
 {
 return o3tl::endsWithIgnoreAsciiCase(rURL, ".wav")
@@ -95,10 +83,11 @@ bool initCondList(const Any& rAny, std::vector& 
rList, bool bIsMainSeqChil
 }
 }
 
-NodeContext::NodeContext(const Reference& xNode, bool 
bMainSeqChild,
- bool bIsIterateChild)
+NodeContext::NodeContext(const Reference& xNode, 
PowerPointExport& rExport,
+ bool bMainSeqChild, bool bIsIterateChild)
 : mxNode(xNode)
 , mbValid(true)
+, mrPowerPointExport(rExport)
 , mbOnSubTnLst(false)
 , mnEffectNodeType(-1)
 , mnEffectPresetClass(css::presentation::EffectPresetClass::CUSTOM)
@@ -117,6 +106,19 @@ NodeContext::NodeContext(const Reference& 
xNode, bool bMainSeqCh
 initCondList(getNodeForCondition()->getEnd(), maEndCondList, 
bMainSeqChild);
 }
 
+bool NodeContext::isValidTarget(const Any& rTarget)
+{
+Reference xShape;
+
+if ((rTarget >>= xShape) && 
drawingml::ShapeExport::IsShapeTypeKnown(xShape)
+&& (mrPowerPointExport.GetShapeID(xShape) != -1))
+return true;
+
+ParagraphTarget aParagraphTarget;
+
+return (rTarget >>= aParagraphTarget) && aParagraphTarget.Shape.is();
+}
+
 void NodeContext::initUserData()
 {
 assert(mxNode.is());
@@ -209,8 +211,8 @@ bool NodeContext::initChildNodes()
 Reference 
xChildNode(xEnumeration->nextElement(), UNO_QUERY);
 if (xChildNode.is())
 {
-auto pChildContext
-= std::make_unique(xChildNode, 
bIsMainSeq, bIsIterateChild);
+auto pChildContext = std::make_unique(
+xChildNode, mrPowerPointExport, bIsMainSeq, 
bIsIterateChild);
 if (pChildContext->isValid())
 bValid = true;
 maChildNodes.push_back(std::move(pChildContext));
diff --git a/sd/source/filter/eppt/pptx-animations-nodectx.hxx 
b/sd/source/filter/eppt/pptx-animations-nodectx.hxx
index c25991a85a23..1830845ea5da 100644
--- a/sd/source/filter/eppt/pptx-animations-nodectx.hxx
+++ b/sd/source/filter/eppt/pptx-animations-nodectx.hxx
@@ -11,6 +11,7 @@
 #include 
 #include 
 #include 
+#include "epptooxml.hxx"
 #include "pptx-animations-cond.hxx"
 
 namespace oox::core
@@ -28,6 +29,8 @@ class NodeContext
 std::vector maEndCondList;
 // if the node has valid target or contains at least one valid target.
 bool mbValid;
+// Required to check if the associated shape is present in export or not
+PowerPointExport& mrPowerPointExport;
 
 // if the node should be on SubTnLst or ChildTnLst
 bool mbOnSubTnLst;
@@ -38,6 +41,8 @@ class NodeContext
 OUString msEffectPresetId;
 OUString msEffectPresetSubType;
 
+bool isValidTarget(const css::uno::Any& rTarget);
+
 /// constructor helper for initializing user data.
 void initUserData();
 
@@ -50,7 +55,7 @@ class NodeContext
 
 public:
 NodeContext(const css::uno::Reference& 
xNode,
-bool bMainSeqChild, bool bIsIterateChild);
+PowerPointExport& rExport, bool bMainSeqChild, bool 
bIsIterateChild);
 const css::uno::Reference& getNode() 
const { return mxNode; }
 sal_Int16 getEffectNodeType() const { return mnEffectNodeType; }
 sal_

core.git: sd/source

2025-12-30 Thread Szymon Kłos (via logerrit)
 sd/source/ui/sidebar/AllMasterPagesSelector.cxx |4 
 sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx |2 --
 sd/source/ui/sidebar/MasterPagesSelector.cxx|5 +
 sd/source/ui/sidebar/MasterPagesSelector.hxx|   17 +
 sd/source/ui/sidebar/RecentMasterPagesSelector.cxx  |2 --
 5 files changed, 22 insertions(+), 8 deletions(-)

New commits:
commit bf390cbecc4e88ccaf1aabcc9f1df9900faa580d
Author: Szymon Kłos 
AuthorDate: Wed Oct 29 12:09:17 2025 +
Commit: Szymon Kłos 
CommitDate: Tue Dec 30 11:46:49 2025 +0100

sd: delay init of master pages widget

- similar to commit 522bde9470bbb321813fa5f1ca8e3c2ebb1bb5cc
Update styles previews in Idle
- avoid rendering previews just on creation of the notebookbar
- we prefer to load presentation first, then start to fill content

Change-Id: I1d2a11e841f82b5695d995495543f8cc3eeec8d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193147
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196324
Tested-by: Jenkins
Reviewed-by: Szymon Kłos 

diff --git a/sd/source/ui/sidebar/AllMasterPagesSelector.cxx 
b/sd/source/ui/sidebar/AllMasterPagesSelector.cxx
index e966d2a8a851..4b10d40af750 100644
--- a/sd/source/ui/sidebar/AllMasterPagesSelector.cxx
+++ b/sd/source/ui/sidebar/AllMasterPagesSelector.cxx
@@ -91,7 +91,6 @@ std::unique_ptr AllMasterPagesSelector::Create (
 rViewShellBase,
 pContainer,
 rxSidebar));
-xSelector->LateInit();
 xSelector->SetHelpId(HID_SD_TASK_PANE_PREVIEW_ALL);
 
 return xSelector;
@@ -112,7 +111,6 @@ std::unique_ptr AllMasterPagesSelector::Create 
(
 *pDocument,
 rViewShellBase,
 pContainer));
-xSelector->LateInit();
 xSelector->SetHelpId(HID_SD_TASK_PANE_PREVIEW_ALL);
 
 return xSelector;
@@ -127,7 +125,6 @@ AllMasterPagesSelector::AllMasterPagesSelector(
   u"masterpageall_icons"_ustr)
 , mpSortedMasterPages(new SortedMasterPageDescriptorList())
 {
-MasterPagesSelector::Fill();
 }
 
 AllMasterPagesSelector::AllMasterPagesSelector(
@@ -138,7 +135,6 @@ AllMasterPagesSelector::AllMasterPagesSelector(
   u"masterpageall_icons"_ustr)
 , mpSortedMasterPages(new SortedMasterPageDescriptorList())
 {
-MasterPagesSelector::Fill();
 }
 
 
diff --git a/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx 
b/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx
index 3efa26e7a34e..aa222e81766a 100644
--- a/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx
+++ b/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx
@@ -54,7 +54,6 @@ std::unique_ptr 
CurrentMasterPagesSelector::Create (
 rViewShellBase,
 pContainer,
 rxSidebar));
-xSelector->LateInit();
 xSelector->SetHelpId( HID_SD_TASK_PANE_PREVIEW_CURRENT );
 
 return xSelector;
@@ -92,7 +91,6 @@ CurrentMasterPagesSelector::~CurrentMasterPagesSelector()
 void CurrentMasterPagesSelector::LateInit()
 {
 MasterPagesSelector::LateInit();
-MasterPagesSelector::Fill();
 if (mrDocument.GetDocSh() != nullptr)
 {
 StartListening(*mrDocument.GetDocSh());
diff --git a/sd/source/ui/sidebar/MasterPagesSelector.cxx 
b/sd/source/ui/sidebar/MasterPagesSelector.cxx
index dce62ce61807..685c128cc479 100644
--- a/sd/source/ui/sidebar/MasterPagesSelector.cxx
+++ b/sd/source/ui/sidebar/MasterPagesSelector.cxx
@@ -62,6 +62,7 @@ MasterPagesSelector::MasterPagesSelector(weld::Widget* 
pParent, SdDrawDocument&
 , mrDocument(rDocument)
 , mrBase(rBase)
 , mxSidebar(std::move(xSidebar))
+, maUpdateTask(*this)
 {
 mxPreviewIconView->connect_item_activated(LINK(this, MasterPagesSelector, 
MasterPageSelected));
 mxPreviewIconView->connect_command(LINK(this, MasterPagesSelector, 
CommandHdl));
@@ -69,6 +70,7 @@ MasterPagesSelector::MasterPagesSelector(weld::Widget* 
pParent, SdDrawDocument&
 
 Link aChangeListener 
(LINK(this,MasterPagesSelector,ContainerChangeListener));
 mpContainer->AddChangeListener(aChangeListener);
+maUpdateTask.Start();
 }
 
 // Notebookbar
@@ -81,6 +83,7 @@ MasterPagesSelector::MasterPagesSelector(weld::Widget* 
pParent, SdDrawDocument&
 , mxPreviewIconView(m_xBuilder->weld_icon_view(rIconViewId))
 , mrDocument(rDocument)
 , mrBase(rBase)
+, maUpdateTask(*this)
 {
 mxPreviewIconView->connect_item_activated(LINK(this, MasterPagesSelector, 
MasterPageSelected));
 mxPreviewIconView->connect_command(LINK(this, MasterPagesSelector, 
CommandHdl));
@@ -88,6 +91,7 @@ MasterPagesSelector::MasterPagesSelector(weld::Widget* 
pParent, SdDrawDocument&
 
 Link aChangeListener 
(LINK(this,MasterPagesSelector,ContainerChangeListener));
 mpContainer->AddChangeListener(aChangeListener);
+maUpdateTask.Start();
 }
 
 
@@ -104,6 +108,7 @@ MasterPagesSelector::~MasterPagesSelector()
 
 void MasterPagesSelector::LateInit()
 

core.git: sd/source

2025-12-29 Thread Xisco Fauli (via logerrit)
 sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx |3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

New commits:
commit d515c26d343c97484039141032a46ca64ce5c572
Author: Xisco Fauli 
AuthorDate: Mon Dec 29 11:13:33 2025 +0100
Commit: Xisco Fauli 
CommitDate: Mon Dec 29 14:14:21 2025 +0100

enable-msvc-analyze: C6011: Dereferencing NULL pointer

E: 
/jenkins/workspace/lo_tb_master_win_analyze/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx(100):
 error C2220: the following warning is treated as an error
E: 
\jenkins\workspace\lo_tb_master_win_analyze\sd\source\ui\sidebar\SlideMasterPagesAllToolBoxControl.cxx(95)
 : warning C6011: Dereferencing NULL pointer 'pDocument'. : Lines: 90, 87, 88, 
87, 90, 91, 92, 93, 95
Change-Id: Icbfc66703523973667fc5e250c8ad238137d7bb9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196289
Tested-by: Jenkins
Reviewed-by: Xisco Fauli 

diff --git a/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx 
b/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx
index e802f0b281c6..733e6ba0c306 100644
--- a/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx
+++ b/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx
@@ -89,8 +89,7 @@ 
SlideMasterPagesAllWrapper::SlideMasterPagesAllWrapper(vcl::Window* pParent,
 reinterpret_cast(SfxViewShell::Current()))
 {
 SdDrawDocument* pDocument = rBase.GetDocument();
-if (pDocument == nullptr)
-SAL_INFO("sd", "SlideMasterPagesAllWrapper got null SdDrawDocument");
+assert(pDocument && "SlideMasterPagesAllWrapper got null SdDrawDocument");
 
 m_xPane = std::make_unique(
 m_xContainer.get(), *pDocument, rBase,


core.git: sd/source

2025-12-28 Thread Szymon Kłos (via logerrit)
 sd/source/ui/animations/SlideTransitionPane.cxx|7 +--
 sd/source/ui/controller/SlideTransitionsToolBoxControl.cxx |1 -
 sd/source/ui/controller/SlideTransitionsToolBoxControl.hxx |1 -
 sd/source/ui/inc/SlideTransitionPane.hxx   |2 ++
 4 files changed, 7 insertions(+), 4 deletions(-)

New commits:
commit 4ae71d565138f5343487c9d0d8736734c1b5d2b4
Author: Szymon Kłos 
AuthorDate: Thu Aug 7 05:07:09 2025 +
Commit: Szymon Kłos 
CommitDate: Mon Dec 29 07:35:26 2025 +0100

notebookbar: slide transition pane disposing

Followup for commit 8e59e9b4fa916e702bb54b963e2cfd75cce1c0e9
notebookbar: move slide transition pane

Fixes case:
- open 2 views of Impress LOK
- close one view

Result: assertion

  7  0x73fd447f1769 in 
std::operator==(std::shared_ptr
 const&, decltype(nullptr)) (__a=...)
at 
/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/shared_ptr.h:561
  8  0x73fd447ee1ca in sd::ViewShellBase::GetEventMultiplexer 
(this=0x346a41b0)
at /media/dev/libreoffice/sd/source/ui/view/ViewShellBase.cxx:940
  9  0x73fd442c202e in sd::SlideTransitionPane::removeListener 
(this=0x3526f8f0)
at 
/media/dev/libreoffice/sd/source/ui/animations/SlideTransitionPane.cxx:930
  10 0x73fd442c1d1b in sd::SlideTransitionPane::~SlideTransitionPane 
(this=0x3526f8f0)
at 
/media/dev/libreoffice/sd/source/ui/animations/SlideTransitionPane.cxx:455

Change-Id: I67b3eb8fa9508470d854790ae3c740b0909e1654
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189034
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196223
Tested-by: Jenkins
Reviewed-by: Szymon Kłos 

diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx 
b/sd/source/ui/animations/SlideTransitionPane.cxx
index c633f6a5b875..39d2f7278313 100644
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -924,14 +924,17 @@ void SlideTransitionPane::playCurrentEffect()
 
 void SlideTransitionPane::addListener()
 {
+if (!mpEventMultiplexer)
+mpEventMultiplexer = mrBase.GetEventMultiplexer();
+
 Link aLink( 
LINK(this,SlideTransitionPane,EventMultiplexerListener) );
-mrBase.GetEventMultiplexer()->AddEventListener( aLink );
+mpEventMultiplexer->AddEventListener( aLink );
 }
 
 void SlideTransitionPane::removeListener()
 {
 Link aLink( 
LINK(this,SlideTransitionPane,EventMultiplexerListener) );
-mrBase.GetEventMultiplexer()->RemoveEventListener( aLink );
+mpEventMultiplexer->RemoveEventListener( aLink );
 }
 
 IMPL_LINK(SlideTransitionPane,EventMultiplexerListener,
diff --git a/sd/source/ui/controller/SlideTransitionsToolBoxControl.cxx 
b/sd/source/ui/controller/SlideTransitionsToolBoxControl.cxx
index 8dfde47ce72f..1bc1d04ed30a 100644
--- a/sd/source/ui/controller/SlideTransitionsToolBoxControl.cxx
+++ b/sd/source/ui/controller/SlideTransitionsToolBoxControl.cxx
@@ -30,7 +30,6 @@ SlideTransitionsToolBoxControl::initialize(const 
css::uno::Sequence
 {
 VclPtr m_xVclBox;
-std::unique_ptr m_xTransitionPane;
 
 public:
 SlideTransitionsToolBoxControl();
diff --git a/sd/source/ui/inc/SlideTransitionPane.hxx 
b/sd/source/ui/inc/SlideTransitionPane.hxx
index 26ca96b0e48a..6201b5e9df5d 100644
--- a/sd/source/ui/inc/SlideTransitionPane.hxx
+++ b/sd/source/ui/inc/SlideTransitionPane.hxx
@@ -20,6 +20,7 @@
 
 #include "SlideSorterViewShell.hxx"
 
+#include "EventMultiplexer.hxx"
 #include 
 #include 
 #include 
@@ -108,6 +109,7 @@ private:
 
 ViewShellBase &   mrBase;
 SdDrawDocument *  mpDrawDoc;
+std::shared_ptr mpEventMultiplexer;
 
 std::unique_ptr mxTransitionsIconView;
 std::unique_ptr mxTransitionsScrollWindow;


core.git: sd/source

2025-12-23 Thread Andreas Heinisch (via logerrit)
 sd/source/ui/view/drviews7.cxx |3 +++
 1 file changed, 3 insertions(+)

New commits:
commit 7ccfa4ea6f8c7215fb065b62f08c7e6cbe553997
Author: Andreas Heinisch 
AuthorDate: Mon Dec 22 09:41:13 2025 +0100
Commit: Andreas Heinisch 
CommitDate: Wed Dec 24 08:41:25 2025 +0100

tdf#112628 - Impress: disable header and footer in master view

Change-Id: Ic3eae2ad1ee204044ec36c83f0541f6ce83d950d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196067
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch 

diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx
index 0084c405afc0..5df8cc3e7bee 100644
--- a/sd/source/ui/view/drviews7.cxx
+++ b/sd/source/ui/view/drviews7.cxx
@@ -857,6 +857,9 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet )
 rSet.Put(SfxBoolItem(SID_PAGEMODE, false));
 rSet.Put(SfxBoolItem(SID_MASTERPAGE, true));
 
+// tdf#112628 - disable header and footer in master view
+rSet.DisableItem(SID_HEADER_AND_FOOTER);
+
 // tdf#139269 - disable menu entries to paste text into read only 
areas of master views
 const OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView();
 if (pOlView && pOlView->IsReadOnly())


core.git: sd/source

2025-12-23 Thread Aron Budea (via logerrit)
 sd/source/filter/eppt/pptx-epptooxml.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 04e5572c796b63da94aedbd07b2b7bd972422161
Author: Aron Budea 
AuthorDate: Wed Dec 24 03:25:24 2025 +1100
Commit: Balazs Varga 
CommitDate: Tue Dec 23 20:17:20 2025 +0100

tdf#170102 PP's Title and Content layout exported incorrectly

In tdf#169825's fix I tried to correct the layout type
corresponding to AUTOLAYOUT_OBJ, originating from PP's obj
ST_SlideLayoutType to AUTOLAYOUT_TITLE_CONTENT, which had
unexpected side-effects:
PPTX->ODP->PPTX conversion of a 'Title, Content' layout added
placeholder artifact.

Revert that part of the change for now.

Regression from eb338daa90afd569e1b86c058bb88a89fab6a557.

Change-Id: I5ba7ee14c4ae3a3a336b051edee4ca8702b87397
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196169
Tested-by: Jenkins
Reviewed-by: Balazs Varga 

diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx 
b/sd/source/filter/eppt/pptx-epptooxml.cxx
index 2964e0d2db25..9fdf97b0a79e 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -254,7 +254,7 @@ const PPTXLayoutInfo aLayoutInfo[] =
 { 8, "Title and table", "tbl" },
 { 9, "Title, clipart on left, text on right", "clipArtAndTx" },
 { 10, "Title, text on left, object on right", "txAndObj" },
-{ 11, "Title and object", "obj" },
+{  1, "Title and object", "obj" },
 { 12, "Title, text on left, two objects on right", "txAndTwoObj" },
 { 13, "Title, object on left, text on right", "objAndTx" },
 { 14, "Title, object on top, text on bottom", "objOverTx" },


core.git: sd/source svx/source

2025-12-23 Thread Balazs Varga (via logerrit)
 sd/source/ui/view/sdview3.cxx |3 ++-
 svx/source/svdraw/svdundo.cxx |6 ++
 2 files changed, 8 insertions(+), 1 deletion(-)

New commits:
commit 9f980e021ff1a7613003e5c93ec49a37c5ca3420
Author: Balazs Varga 
AuthorDate: Mon Dec 22 14:59:46 2025 +0100
Commit: Balazs Varga 
CommitDate: Tue Dec 23 19:38:56 2025 +0100

tdf#170027 - sd fix crash when undoing shape drag with Alt pressed

Do not overwrite original shape during drag&drop with Alt,
when we try to drag&drop the shape on the same shape,
but create a new shape with new name, same as if we would drag&drop
the object in general.

Change-Id: I08b2197b3b9755455a165a566eb3452846c0f78e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196097
Reviewed-by: Mike Kaganski 
Reviewed-by: Balazs Varga 
Tested-by: Jenkins

diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index 6d3bc7e4d519..fe66f97a3b12 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -764,7 +764,7 @@ bool View::InsertData( const TransferableDataHelper& 
rDataHelper,
 SdrPageView*pPV = nullptr;
 SdrObject* pPickObj2 = PickObj(rPos, getHitTolLog(), 
pPV);
 
-if( ( mnAction & DND_ACTION_MOVE ) && pPickObj2 && 
pObj )
+if( ( mnAction & DND_ACTION_MOVE ) && pPickObj2 && 
pObj && pPickObj2->GetName() != pObj->GetName() )
 {
 // replace object
 SdrPage* pWorkPage = GetSdrPageView()->GetPage();
@@ -804,6 +804,7 @@ bool View::InsertData( const TransferableDataHelper& 
rDataHelper,
 mnAction = DND_ACTION_COPY;
 }
 else if( ( mnAction & DND_ACTION_LINK ) && pPickObj2 
&& pObj &&
+pPickObj2->GetName() != pObj->GetName() &&
 dynamic_cast< const SdrGrafObj *>( pPickObj2 ) ==  
nullptr &&
 dynamic_cast< const SdrOle2Obj *>( pPickObj2 ) 
==  nullptr )
 {
diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx
index 8c0b2f375e06..cc6de3fe1d5c 100644
--- a/svx/source/svdraw/svdundo.cxx
+++ b/svx/source/svdraw/svdundo.cxx
@@ -703,6 +703,7 @@ void SdrUndoRemoveObj::Undo()
 // position of the target object.
 Point aOwnerAnchorPos(0, 0);
 
+assert(pObjList); // must never be null
 if (dynamic_cast< const SdrObjGroup* 
>(pObjList->getSdrObjectFromSdrObjList()) != nullptr)
 {
 aOwnerAnchorPos = 
pObjList->getSdrObjectFromSdrObjList()->GetAnchorPos();
@@ -725,6 +726,7 @@ void SdrUndoRemoveObj::Redo()
 {
 ImplUnmarkObject( mxObj.get() );
 E3DModifySceneSnapRectUpdater aUpdater(mxObj.get());
+assert(pObjList); // must never be null
 pObjList->RemoveObject(mxObj->GetOrdNum());
 }
 
@@ -747,6 +749,7 @@ void SdrUndoInsertObj::Undo()
 {
 ImplUnmarkObject( mxObj.get() );
 
+assert(pObjList); // must never be null
 rtl::Reference pChkObj= 
pObjList->RemoveObject(mxObj->GetOrdNum());
 DBG_ASSERT(pChkObj.get()==mxObj.get(),"UndoInsertObj: 
RemoveObjNum!=mxObj");
 }
@@ -762,6 +765,7 @@ void SdrUndoInsertObj::Redo()
 // . Needed for correct Redo in Writer. (#i45952#)
 Point aAnchorPos( 0, 0 );
 
+assert(pObjList); // must never be null
 if (dynamic_cast(pObjList->getSdrObjectFromSdrObjList()) != nullptr)
 {
 aAnchorPos = mxObj->GetAnchorPos();
@@ -857,12 +861,14 @@ void SdrUndoReplaceObj::Undo()
 DBG_ASSERT(mxNewObj->IsInserted(),"SdrUndoReplaceObj::Undo(): New object 
is not inserted!");
 
 ImplUnmarkObject( mxNewObj.get() );
+assert(m_pObjList); // must never be null
 m_pObjList->ReplaceObject(mxObj.get(), mxNewObj->GetOrdNum());
 }
 
 void SdrUndoReplaceObj::Redo()
 {
 ImplUnmarkObject( mxObj.get() );
+assert(m_pObjList); // must never be null
 m_pObjList->ReplaceObject(mxNewObj.get(), mxObj->GetOrdNum());
 
 // Trigger PageChangeCall


core.git: sd/source

2025-12-19 Thread Tomaž Vajngerl (via logerrit)
 sd/source/core/drawdoc4.cxx |  321 ++--
 1 file changed, 164 insertions(+), 157 deletions(-)

New commits:
commit 67f5bdcfc748824a229bf93c24930b4b5043e764
Author: Tomaž Vajngerl 
AuthorDate: Wed Dec 17 10:24:04 2025 +0900
Commit: Tomaž Vajngerl 
CommitDate: Fri Dec 19 15:00:31 2025 +0100

sd: cleanup creation of default stlyesheets

Change-Id: I02105e1f3d319cb52339030615fd7e2e72e7bd11
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195757
Reviewed-by: Tomaž Vajngerl 
Tested-by: Jenkins

diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx
index 795561d8eb36..543417cc3bfb 100644
--- a/sd/source/core/drawdoc4.cxx
+++ b/sd/source/core/drawdoc4.cxx
@@ -128,6 +128,13 @@ using namespace ::com::sun::star::style;
 using namespace ::com::sun::star::linguistic2;
 using namespace ::sd;
 
+namespace
+{
+template  constexpr auto pointsToHMM(N number)
+{
+return o3tl::convert(number, o3tl::Length::pt, o3tl::Length::mm100);
+}}
+
 // CreateLayoutTemplates
 // At the moment (31.03.1995), the StyleSheetPool only saves styleheets that
 // have an ItemSet. To save all stylesheets, we force the creation of an 
ItemSet
@@ -135,10 +142,10 @@ using namespace ::sd;
 // We can remove this behavior once the pool saves styleheets even without an 
ItemSet
 void SdDrawDocument::CreateLayoutTemplates()
 {
-SdStyleSheetPool*   pSSPool = 
static_cast(GetStyleSheetPool());
-SfxStyleSheetBase*  pSheet = nullptr;
-const OUString  aHelpFile;
-OUStringaStdName(SdResId(STR_STANDARD_STYLESHEET_NAME));
+SdStyleSheetPool* pSSPool = 
static_cast(GetStyleSheetPool());
+SfxStyleSheetBase* pSheet = nullptr;
+const OUString aHelpFile;
+OUString aStdName(SdResId(STR_STANDARD_STYLESHEET_NAME));
 
 // Default style
 
@@ -146,21 +153,18 @@ void SdDrawDocument::CreateLayoutTemplates()
 
 OUString aName(aStdName);
 pSheet = &(pSSPool->Make(aName, SfxStyleFamily::Para, nMask));
-pSheet->SetHelpId( aHelpFile, HID_STANDARD_STYLESHEET_NAME );
+pSheet->SetHelpId(aHelpFile, HID_STANDARD_STYLESHEET_NAME);
 SfxItemSet& rISet = pSheet->GetItemSet();
 
-ColoraNullCol(COL_DEFAULT_SHAPE_STROKE);
+Color aNullCol(COL_DEFAULT_SHAPE_STROKE);
 
-XDash aNullDash;
-basegfx::BGradient aNullGrad(
-basegfx::BColorStops(
-aNullCol.getBColor(),
-COL_WHITE.getBColor()));
-aNullGrad.SetStartIntens( 100 );
-aNullGrad.SetEndIntens( 100 );
-XHatchaNullHatch(aNullCol);
+XDash aNullDash;
+basegfx::BGradient aNullGrad(basegfx::BColorStops(aNullCol.getBColor(), 
COL_WHITE.getBColor()));
+aNullGrad.SetStartIntens(100);
+aNullGrad.SetEndIntens(100);
+XHatch aNullHatch(aNullCol);
 
-// Line attributes (Extended OutputDevice)
+// Line attributes (Extended OutputDevice)
 rISet.Put(XLineStyleItem(drawing::LineStyle_SOLID));
 rISet.Put(XLineColorItem(OUString(), COL_DEFAULT_SHAPE_STROKE));
 rISet.Put(XLineWidthItem(0));
@@ -173,51 +177,54 @@ void SdDrawDocument::CreateLayoutTemplates()
 rISet.Put(XLineEndCenterItem());
 rISet.Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_BLOCK));
 
-// Fill attributes (Extended OutputDevice)
+// Fill attributes (Extended OutputDevice)
 rISet.Put(XFillStyleItem(drawing::FillStyle_SOLID));
 rISet.Put(XFillColorItem(OUString(), COL_DEFAULT_SHAPE_FILLING));
 
-rISet.Put( XFillGradientItem( aNullGrad) );
+rISet.Put(XFillGradientItem(aNullGrad));
 rISet.Put(XFillHatchItem(aNullHatch));
-SizeaNullSize( 32, 32 );
+Size aNullSize(32, 32);
 Bitmap aNullBmp(aNullSize, vcl::PixelFormat::N8_BPP);
-aNullBmp.Erase( COL_WHITE );
+aNullBmp.Erase(COL_WHITE);
 rISet.Put(XFillBitmapItem(Graphic(aNullBmp)));
 
-// Shadow attributes (Drawing Engine)
+// Shadow attributes (Drawing Engine)
 rISet.Put(makeSdrShadowItem(false));
 rISet.Put(makeSdrShadowColorItem(COL_GRAY));
-rISet.Put(makeSdrShadowXDistItem(200)); // 3 mm Shadow distance
+rISet.Put(makeSdrShadowXDistItem(200)); // 2 mm Shadow distance
 rISet.Put(makeSdrShadowYDistItem(200));
 
 vcl::Font aLatinFont, aCJKFont, aCTLFont;
 
-getDefaultFonts( aLatinFont, aCJKFont, aCTLFont );
+getDefaultFonts(aLatinFont, aCJKFont, aCTLFont);
 
-SvxFontItem aSvxFontItem( aLatinFont.GetFamilyTypeMaybeAskConfig(), 
aLatinFont.GetFamilyName(), aLatinFont.GetStyleName(), 
aLatinFont.GetPitchMaybeAskConfig(),
-  aLatinFont.GetCharSet(), EE_CHAR_FONTINFO );
+SvxFontItem aSvxFontItem(aLatinFont.GetFamilyType(), 
aLatinFont.GetFamilyName(),
+ aLatinFont.GetStyleName(), aLatinFont.GetPitch(),
+ aLatinFont.GetCharSet(), EE_CHAR_FONTINFO);
 
-SvxFontItem aSvxFontItemCJK( aCJKFont.GetFamilyTypeMaybeAskConfig(), 

core.git: sd/source

2025-12-11 Thread shlok3640 (via logerrit)
 sd/source/ui/slideshow/SlideShowRestarter.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 71e72d9103add966c3fa950f9524e00b5a93648f
Author: shlok3640 
AuthorDate: Sun Dec 7 10:34:13 2025 +
Commit: Mike Kaganski 
CommitDate: Thu Dec 11 12:08:06 2025 +0100

tdf#165233 Replace std::bind with lambda in SlideShowRestarter

Change-Id: I1c0028bb3506e3433798f674510045792b914180
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195183
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/sd/source/ui/slideshow/SlideShowRestarter.cxx 
b/sd/source/ui/slideshow/SlideShowRestarter.cxx
index 3cfa3ebfc70e..b479eec3e298 100644
--- a/sd/source/ui/slideshow/SlideShowRestarter.cxx
+++ b/sd/source/ui/slideshow/SlideShowRestarter.cxx
@@ -119,7 +119,7 @@ IMPL_LINK_NOARG(SlideShowRestarter, EndPresentation, void*, 
void)
 
 pHelper->RunOnConfigurationEvent(
 
sd::framework::ConfigurationChangeEventType::ConfigurationUpdateEnd,
-::std::bind(&SlideShowRestarter::StartPresentation, 
shared_from_this()));
+[self = shared_from_this()](bool) { self->StartPresentation(); });
 pHelper->UpdateConfiguration();
 }
 else


core.git: sd/source

2025-12-08 Thread Noel Grandin (via logerrit)
 sd/source/filter/eppt/pptx-epptooxml.cxx |7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

New commits:
commit 782d2f95fb61e05e78e79a788b9da4de67fb
Author: Noel Grandin 
AuthorDate: Wed Dec 3 14:00:08 2025 +0200
Commit: Michael Stahl 
CommitDate: Mon Dec 8 11:28:54 2025 +0100

mso-test: clamp page size to supported range

found by converting ooo127565-1.odp to pptx and running officeotron on the 
output

INFO - Validating part "/ppt/presentation.xml" using schema 
"29500T/pml.xsd" ...
ERROR  - (ppt/presentation.xml:2 col:610) cvc-minInclusive-valid:
Value '360363' is not facet-valid with respect to minInclusive '914400'
   for type 'ST_SlideSizeCoordinate'.
ERROR  - (ppt/presentation.xml:2 col:610) cvc-attribute.3:
   The value '360363' of attribute 'cy' on element 'p:sldSz' is not valid
   with respect to its type, 'ST_SlideSizeCoordinate'.

Change-Id: I461b9d07af7f3cda85d57c871a0d88fce977bf9f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194957
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit 7c92bd105adff1297d632b5f27b4a690e430356c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195012
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx 
b/sd/source/filter/eppt/pptx-epptooxml.cxx
index ee8070ef28be..46879dd2151e 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -499,9 +499,12 @@ bool PowerPointExport::exportDocument()
 
 exportPPT(aProperties);
 
+// clamp to minimum values supported by PPTX
+sal_Int64 nDestPageWidth = std::max(sal_Int64(914400), 
PPTtoEMU(maDestPageSize.Width));
+sal_Int64 nDestPageHeight = std::max(sal_Int64(914400), 
PPTtoEMU(maDestPageSize.Height));
 mPresentationFS->singleElementNS(XML_p, XML_sldSz,
- XML_cx, 
OString::number(PPTtoEMU(maDestPageSize.Width)),
- XML_cy, 
OString::number(PPTtoEMU(maDestPageSize.Height)));
+ XML_cx, OString::number(nDestPageWidth),
+ XML_cy, OString::number(nDestPageHeight));
 // for some reason if added before slides list it will not load the slides 
(alas with error reports) in mso
 mPresentationFS->singleElementNS(XML_p, XML_notesSz,
  XML_cx, 
OString::number(PPTtoEMU(maNotesPageSize.Width)),


core.git: sd/source

2025-12-03 Thread Bayram Çiçek (via logerrit)
 sd/source/ui/annotations/annotationmanager.cxx |   12 +---
 sd/source/ui/annotations/annotationmanagerimpl.hxx |1 +
 2 files changed, 10 insertions(+), 3 deletions(-)

New commits:
commit c6d713ec3bc5d08c89550575ed9db18a36047a11
Author: Bayram Çiçek 
AuthorDate: Wed Nov 5 00:57:18 2025 +0300
Commit: Caolán McNamara 
CommitDate: Wed Dec 3 14:20:49 2025 +0100

impress: fix typing issue after comment save

- after saving a comment, editing was not possible in a textbox until the 
comment was deleted.
- textboxes are now editable.

Signed-off-by: Bayram Çiçek 
Change-Id: I989a18f34b0fb40c5ca46b1d9556298a89bc745e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193436
Tested-by: Jenkins CollaboraOffice 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194948
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sd/source/ui/annotations/annotationmanager.cxx 
b/sd/source/ui/annotations/annotationmanager.cxx
index 6c4115c5f2cf..bd882b187824 100644
--- a/sd/source/ui/annotations/annotationmanager.cxx
+++ b/sd/source/ui/annotations/annotationmanager.cxx
@@ -312,6 +312,12 @@ void AnnotationManagerImpl::ShowAnnotations( bool bShow )
 }
 }
 
+bool AnnotationManagerImpl::isVisibleAnnotations()
+{
+return (!comphelper::LibreOfficeKit::isActive()
+|| comphelper::LibreOfficeKit::isTiledAnnotations());
+}
+
 void AnnotationManagerImpl::ExecuteAnnotation(SfxRequest const & rReq )
 {
 switch( rReq.GetSlot() )
@@ -342,7 +348,7 @@ void AnnotationManagerImpl::ExecuteAnnotation(SfxRequest 
const & rReq )
 
 void AnnotationManagerImpl::ExecuteInsertAnnotation(SfxRequest const & rReq)
 {
-if (!comphelper::LibreOfficeKit::isActive() || 
comphelper::LibreOfficeKit::isTiledAnnotations())
+if (isVisibleAnnotations())
 ShowAnnotations(true);
 
 const SfxItemSet* pArgs = rReq.GetArgs();
@@ -563,7 +569,7 @@ void AnnotationManagerImpl::InsertAnnotation(const 
OUString& rText)
 LOKCommentNotifyAll(sdr::annotation::CommentNotificationType::Add, 
*xAnnotation);
 
 UpdateTags(true);
-SelectAnnotation(xAnnotation, true);
+SelectAnnotation(xAnnotation, isVisibleAnnotations());
 }
 
 void AnnotationManagerImpl::ExecuteReplyToAnnotation( SfxRequest const & rReq )
@@ -668,7 +674,7 @@ void AnnotationManagerImpl::ExecuteReplyToAnnotation( 
SfxRequest const & rReq )
 mpDoc->EndUndo();
 
 UpdateTags(true);
-SelectAnnotation( xAnnotation, true );
+SelectAnnotation( xAnnotation, isVisibleAnnotations() );
 }
 
 void 
AnnotationManagerImpl::DeleteAnnotation(rtl::Reference
 const& xAnnotation )
diff --git a/sd/source/ui/annotations/annotationmanagerimpl.hxx 
b/sd/source/ui/annotations/annotationmanagerimpl.hxx
index 088e41a2cb9d..af978e34c58e 100644
--- a/sd/source/ui/annotations/annotationmanagerimpl.hxx
+++ b/sd/source/ui/annotations/annotationmanagerimpl.hxx
@@ -103,6 +103,7 @@ public:
 SdPage* GetCurrentPage();
 
 void ShowAnnotations(bool bShow);
+static bool isVisibleAnnotations();
 
 private:
 ViewShellBase& mrBase;


core.git: sd/source

2025-12-03 Thread Gülşah Köse (via logerrit)
 sd/source/ui/view/sdview.cxx |   12 
 1 file changed, 8 insertions(+), 4 deletions(-)

New commits:
commit 3f6050f369889ec798d1445685f45d9f7c16ebb1
Author: Gülşah Köse 
AuthorDate: Tue Oct 14 14:43:45 2025 +0300
Commit: Caolán McNamara 
CommitDate: Wed Dec 3 12:17:37 2025 +0100

cool#13193 Fix Ctrl Shift V issue on impress

f0c25c751cf8e166a84b289746bce6202a40391d is merged to fix tdf#115783
But that commit caused a bug on Impress when the we have different
character and paragraph styles in textboxes. Commit aims to solve a
table issue.

To solve the Impress regression we should
apply the solution only table objects

I tried to write a test but it's not testable with reasonable
amount of effort

Signed-off-by: Gülşah Köse 
Change-Id: I132e8257af2aadbdb816865678966b54de373ef8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192389
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Miklos Vajna 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194947
Reviewed-by: Caolán McNamara 
Tested-by: Jenkins

diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index 7b98d3af55ff..218e8c1ad869 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -1160,11 +1160,15 @@ void View::OnBeginPasteOrDrop( PasteOrDropInfos* pInfo )
 if (!pOutliner)
 return;
 
-// Turn character attributes of the paragraph of the insert position into
+// Turn character attributes of the table paragraph of the insert position 
into
 // character-level attributes, so they are not lost when OnEndPasteOrDrop()
-// sets the paragraph stylesheet.
-SfxItemSet aSet(pOutliner->GetParaAttribs(pInfo->nStartPara));
-pOutliner->SetCharAttribs(pInfo->nStartPara, aSet);
+// sets the paragraph stylesheet. (tdf#115783)
+const SdrTableObj* pTableObj = dynamic_cast(pOutliner->GetTextObj());
+if (pTableObj)
+{
+SfxItemSet aSet(pOutliner->GetParaAttribs(pInfo->nStartPara));
+pOutliner->SetCharAttribs(pInfo->nStartPara, aSet);
+}
 }
 
 /** this is called after a paste or drop operation, make sure that the newly 
inserted paragraphs


core.git: sd/source

2025-12-01 Thread Henry Castro (via logerrit)
 sd/source/ui/unoidl/unomodel.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 8039fa22bf952e24284f2077ed2d9138f301b676
Author: Henry Castro 
AuthorDate: Fri Oct 10 08:35:28 2025 -0400
Commit: Henry Castro 
CommitDate: Mon Dec 1 18:10:17 2025 +0100

sd: ensure non-empty text objects

Change-Id: I289db4bb5ee2c494d88f737bac8141b2385afda9
Signed-off-by: Henry Castro 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192166
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Caolán McNamara 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194874
Tested-by: Jenkins

diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index d826391f63d6..ea6ce5b9cec3 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -4700,7 +4700,7 @@ OString SdXImpressDocument::getPresentationInfo(bool 
bAllyState) const
 {
 pItObj = pNotesPage->GetObj(nNote);
 
-if (pItObj &&
+if (pItObj && pItObj->HasText() &&
 (pItObj->GetObjIdentifier() == SdrObjKind::Text
  || pItObj->GetObjIdentifier() == 
SdrObjKind::TitleText
  || pItObj->GetObjIdentifier() == 
SdrObjKind::OutlineText))


core.git: sd/source

2025-11-27 Thread Caolán McNamara (via logerrit)
 sd/source/ui/unoidl/unomodel.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit ef93d3951da8a61543eac82baa99a977c8b70935
Author: Caolán McNamara 
AuthorDate: Tue Nov 25 20:18:18 2025 +
Commit: Caolán McNamara 
CommitDate: Thu Nov 27 13:45:24 2025 +0100

a null mpDoc was seen here

under windows

Change-Id: I638a0bd77538db7200bdc2c705f51ec031bcdb46
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194548
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins CollaboraOffice 
Code-Style: Miklos Vajna 
(cherry picked from commit e257b5a28896f140c4b47c258491031a0bec06bb)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194678
Reviewed-by: Caolán McNamara 
Tested-by: Jenkins
Code-Style: Caolán McNamara 
Tested-by: Caolán McNamara 

diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 381edc236775..d826391f63d6 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -3951,7 +3951,7 @@ OString 
SdXImpressDocument::getViewRenderState(SfxViewShell* pViewShell)
 if (pView)
 {
 const SdViewOptions& pVOpt = pView->GetViewOptions();
-if (mpDoc->GetOnlineSpell())
+if (mpDoc && mpDoc->GetOnlineSpell())
 aState.append('S');
 if (!ThemeColors::UseOnlyWhiteDocBackground())
 {


core.git: sd/source

2025-11-24 Thread Miklos Vajna (via logerrit)
 sd/source/ui/unoidl/unomodel.cxx |5 +
 1 file changed, 5 insertions(+)

New commits:
commit 2eee4d959840b100b193792e2c8d072254ad78b9
Author: Miklos Vajna 
AuthorDate: Fri Nov 21 09:28:13 2025 +0100
Commit: Miklos Vajna 
CommitDate: Mon Nov 24 09:47:18 2025 +0100

sd: fix crash in SdXImpressDocument::postMouseEvent()

gdb trace on the core file:

#0  0x774df1e04d9d in SdrPageView::GetPage (this=0x0) at 
include/svx/svdpagv.hxx:167
#1  SdXImpressDocument::postMouseEvent (this=, 
nType=2, nX=, nY=, nCount=1, nButtons=0, 
nModifier=0)
at sd/source/ui/unoidl/unomodel.cxx:4370
#2  0x774e00fbec12 in doc_postMouseEvent (pThis=0x3cd69250, 
nType=2, nX=-180, nY=2220, nCount=1, nButtons=0, nModifier=0)
at desktop/source/lib/init.cxx:5661
#3  0x0058ab29 in lok::Document::postMouseEvent 
(nModifier=0, nButtons=0, nCount=, nY=, 
nX=, nType=,
this=) at 
include/LibreOfficeKit/LibreOfficeKit.hxx:297

Handle it similar to the nullptr sd Window just a bit later.

Change-Id: I7a6e7dfc6971f266e1205ee3b92eb1ed5bae1025
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194339
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins

diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index b1809543b825..381edc236775 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -4321,6 +4321,11 @@ void SdXImpressDocument::postMouseEvent(int nType, int 
nX, int nY, int nCount, i
 const Point aPointHMM = o3tl::convert(aPointTwip, o3tl::Length::twip, 
o3tl::Length::mm100);
 SdrView* pDrawView = pViewShell->GetDrawView();
 SdrPageView* pPageView = pDrawView->GetSdrPageView();
+if (!pPageView)
+{
+return;
+}
+
 SdrPage* pPage = pPageView->GetPage();
 ::sd::Window* pActiveWin = pViewShell->GetActiveWindow();
 if (!pActiveWin)


core.git: sd/source

2025-11-20 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |   10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)

New commits:
commit b8eb27b3b087dc1952c8f72d37519c2345770a33
Author: Karthik Godha 
AuthorDate: Fri Nov 14 16:10:53 2025 +0530
Commit: Michael Stahl 
CommitDate: Thu Nov 20 16:01:06 2025 +0100

tdf#169438: Fix PPT->PPTX audio in animations

Don't export audio in animations which are not in use.

Change-Id: I7c5f4e90b36d0c0104a95958c5508dc6b24b2a00
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194018
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit 3e9a1086bd87e8a3edba9417cdfdc09ed1cad63d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194229
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index 694bf51ee6ca..c897645491e9 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -491,7 +491,7 @@ class PPTXAnimationExport
 void WriteAnimationNodeEffect();
 void WriteAnimationNodeCommand();
 /// Handles XAudio nodes, used for both video and audio.
-void WriteAnimationNodeMedia();
+void WriteAnimationNodeMedia(const sal_Int16 nParentNodeType);
 void WriteAnimationNodeCommonPropsStart();
 void WriteAnimationTarget(const Any& rTarget);
 void WriteAnimationCondList(const std::vector& rList, sal_Int32 
nToken);
@@ -1074,7 +1074,7 @@ void PPTXAnimationExport::WriteAnimationNodeCommand()
 mpFS->endElementNS(XML_p, XML_cmd);
 }
 
-void PPTXAnimationExport::WriteAnimationNodeMedia()
+void PPTXAnimationExport::WriteAnimationNodeMedia(const sal_Int16 
nParentNodeType)
 {
 SAL_INFO("sd.eppt", "write animation node media");
 Reference xAudio(getCurrentNode(), UNO_QUERY);
@@ -1126,6 +1126,10 @@ void PPTXAnimationExport::WriteAnimationNodeMedia()
 }
 else
 {
+// Don't export audio node if the context doesn't have any triggers
+if (!convertEffectNodeType(nParentNodeType))
+return;
+
 bool bNarration = xAudio->getNarration();
 mpFS->startElementNS(XML_p, XML_audio, XML_isNarration, bNarration ? 
"1" : "0");
 bool bHideDuringShow = xAudio->getHideDuringShow();
@@ -1208,7 +1212,7 @@ void PPTXAnimationExport::WriteAnimationNode(const 
NodeContextPtr& pContext)
 WriteAnimationNodeCommand();
 break;
 case XML_audio:
-WriteAnimationNodeMedia();
+WriteAnimationNodeMedia(pSavedContext->getEffectNodeType());
 break;
 default:
 SAL_WARN("sd.eppt", "export ooxml node type: " << xmlNodeType);


core.git: sd/source

2025-11-19 Thread Noel Grandin (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |   14 --
 1 file changed, 12 insertions(+), 2 deletions(-)

New commits:
commit cbf102d4c1ba73519b49df0d43a87ebdf9267538
Author: Noel Grandin 
AuthorDate: Tue Nov 18 16:35:48 2025 +0200
Commit: Noel Grandin 
CommitDate: Wed Nov 19 14:50:01 2025 +0100

mso-test: cannot have empty childTnLst element

found by converting tdf136301-1.odp to pptx and running officeotron on the 
output

we do not currently support exporting ANIMATIONPHYSICS node types,
so don't export a childTnLst element if we see one of those.

Change-Id: I159fd4fe677198529782ad0b4890a1c0af3b1658
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194165
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit d764cc96dc155acb64a991770f24c139516fc0e0)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194201
Reviewed-by: Noel Grandin 
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index d8407b09c093..694bf51ee6ca 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -951,18 +951,28 @@ void 
PPTXAnimationExport::WriteAnimationNodeCommonPropsStart()
 if (!aChildNodes.empty())
 {
 bool bSubTnLst = false;
-mpFS->startElementNS(XML_p, XML_childTnLst);
+bool bWroteChildTnList = false;
 for (const NodeContextPtr& pChildContext : aChildNodes)
 {
 if (pChildContext->isValid())
 {
 if (pChildContext->isOnSubTnLst())
 bSubTnLst = true;
+else if (pChildContext->getNode()->getType() == 
AnimationNodeType::ANIMATEPHYSICS)
+; // ignore we don't support exporting this node type
 else
+{
+if (!bWroteChildTnList)
+{
+bWroteChildTnList = true;
+mpFS->startElementNS(XML_p, XML_childTnLst);
+}
 WriteAnimationNode(pChildContext);
+}
 }
 }
-mpFS->endElementNS(XML_p, XML_childTnLst);
+if (bWroteChildTnList)
+mpFS->endElementNS(XML_p, XML_childTnLst);
 
 if (bSubTnLst)
 {


core.git: sd/source

2025-11-12 Thread Miklos Vajna (via logerrit)
 sd/source/ui/func/fuolbull.cxx |4 ++--
 sd/source/ui/inc/fuolbull.hxx  |2 ++
 sd/source/ui/view/drtxtob1.cxx |3 ++-
 sd/source/ui/view/drviews2.cxx |6 ++
 4 files changed, 8 insertions(+), 7 deletions(-)

New commits:
commit d6decd534412867fd95940eacc6809a15cb302a5
Author: Miklos Vajna 
AuthorDate: Wed Nov 12 09:17:17 2025 +0100
Commit: Miklos Vajna 
CommitDate: Thu Nov 13 08:58:30 2025 +0100

sd, FuBulletAndPosition: avoid magic number for bullet toggle

See
,
it seems this magic was set at 3 locations, but only read at one place,
change all that to a named constant instead.

Change-Id: I979dcef54ab638275d793f195ac34533c95f0bf6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193870
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins

diff --git a/sd/source/ui/func/fuolbull.cxx b/sd/source/ui/func/fuolbull.cxx
index d9db92f27fe3..ef4dd373fcbc 100644
--- a/sd/source/ui/func/fuolbull.cxx
+++ b/sd/source/ui/func/fuolbull.cxx
@@ -164,9 +164,9 @@ void 
FuBulletAndPosition::SetCurrentBulletsNumbering(SfxRequest& rReq)
 
 sal_uInt16 nIdx = pItem->GetValue();
 bool bToggle = false;
-if( nIdx == sal_uInt16(0x) )
+if( nIdx == BULLET_TOGGLE )
 {
-// If the nIdx is (sal_uInt16)0x, means set bullet status to on/off
+// Set bullet status to on/off
 nIdx = 1;
 bToggle = true;
 }
diff --git a/sd/source/ui/inc/fuolbull.hxx b/sd/source/ui/inc/fuolbull.hxx
index ea6b4813c44d..ab16275cecf4 100644
--- a/sd/source/ui/inc/fuolbull.hxx
+++ b/sd/source/ui/inc/fuolbull.hxx
@@ -43,6 +43,8 @@ public:
 static rtl::Reference Create( ViewShell& rViewSh, ::sd::Window* 
pWin, ::sd::View* pView, SdDrawDocument& rDoc, SfxRequest& rReq );
 virtual void DoExecute( SfxRequest& rReq ) override;
 
+constexpr static sal_uInt16 BULLET_TOGGLE = 0x;
+
 private:
 FuBulletAndPosition (
 ViewShell& rViewShell,
diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx
index 2c41d3b120c9..5e3902ab2471 100644
--- a/sd/source/ui/view/drtxtob1.cxx
+++ b/sd/source/ui/view/drtxtob1.cxx
@@ -64,6 +64,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #include 
@@ -409,7 +410,7 @@ void TextObjectBar::Execute(SfxRequest& rReq)
 {
 // Set all levels of the list, so later increase/decrease 
of the list level
 // works, too.
-SfxUInt16Item aItem(FN_SVX_SET_BULLET, sal_uInt16(0x));
+SfxUInt16Item aItem(FN_SVX_SET_BULLET, 
FuBulletAndPosition::BULLET_TOGGLE);
 mrViewShell.GetViewFrame()->GetDispatcher()->ExecuteList(
 FN_SVX_SET_BULLET, SfxCallMode::RECORD, { &aItem });
 }
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 55315e54479e..a15fc19532a4 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -2145,8 +2145,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
 
 case FN_NUM_BULLET_ON:
 {
-// The value (sal_uInt16)0x means set bullet on/off.
-SfxUInt16Item aItem(FN_SVX_SET_BULLET, sal_uInt16(0x));
+SfxUInt16Item aItem(FN_SVX_SET_BULLET, 
FuBulletAndPosition::BULLET_TOGGLE);
 GetViewFrame()->GetDispatcher()->ExecuteList(FN_SVX_SET_BULLET,
 SfxCallMode::RECORD, { &aItem });
 }
@@ -2154,8 +2153,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
 
 case FN_NUM_NUMBERING_ON:
 {
-// The value (sal_uInt16)0x means set bullet on/off.
-SfxUInt16Item aItem(FN_SVX_SET_NUMBER, sal_uInt16(0x));
+SfxUInt16Item aItem(FN_SVX_SET_NUMBER, 
FuBulletAndPosition::BULLET_TOGGLE);
 GetViewFrame()->GetDispatcher()->ExecuteList(FN_SVX_SET_NUMBER,
 SfxCallMode::RECORD, { &aItem });
 }


core.git: sd/source

2025-11-11 Thread Andreas Heinisch (via logerrit)
 sd/source/ui/app/sdmod2.cxx |   15 ---
 1 file changed, 12 insertions(+), 3 deletions(-)

New commits:
commit 968608eb1c65d96b54292d4926cdd0706ce594f4
Author: Andreas Heinisch 
AuthorDate: Fri Nov 7 10:33:39 2025 +0100
Commit: Andreas Heinisch 
CommitDate: Tue Nov 11 09:37:34 2025 +0100

tdf#68320 - Impress: include/exclude hidden pages in slide count field

Include/exclude hidden pages in slide count field. This improves the count 
consistency in the slide sorter and in various printing situations, i.e., 
printing slides or handouts including hidden pages.

Change-Id: I91950736f272695644aabc383d9f1e8fc17a22a8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193572
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch 

diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx
index 52ebc7b33c5e..7a0687b26e15 100644
--- a/sd/source/ui/app/sdmod2.cxx
+++ b/sd/source/ui/app/sdmod2.cxx
@@ -299,11 +299,20 @@ IMPL_LINK(SdModule, CalcFieldValueHdl, EditFieldInfo*, 
pInfo, void)
 
 if( !bMasterView )
 {
-if( pPage && (pPage->GetPageKind() == PageKind::Handout) && 
pViewSh )
+if (pPage)
 {
-nPageCount = pViewSh->GetPrintedHandoutPageCount();
+const auto ePageKind = pPage->GetPageKind();
+if (pViewSh && ePageKind == PageKind::Handout)
+{
+nPageCount = pViewSh->GetPrintedHandoutPageCount();
+}
+else if (pDoc)
+{
+// tdf#68320 - include hidden pages in slide count field
+nPageCount = pDoc->GetSdPageCount(ePageKind);
+}
 }
-else if( pDoc )
+else if (pDoc)
 {
 nPageCount = pDoc->GetActiveSdPageCount();
 }


core.git: sd/source

2025-11-07 Thread Miklos Vajna (via logerrit)
 sd/source/ui/inc/DrawViewShell.hxx |1 
 sd/source/ui/view/drviews2.cxx |  ++---
 2 files changed, 559 insertions(+), 553 deletions(-)

New commits:
commit 49f6bd58d707c79b32298cd61682080ba6bfe5bb
Author: Miklos Vajna 
AuthorDate: Fri Nov 7 13:06:43 2025 +0100
Commit: Miklos Vajna 
CommitDate: Fri Nov 7 21:09:13 2025 +0100

sd: extract FN_TRANSFORM_DOCUMENT_STRUCTURE handling to a new function

sd::DrawViewShell::FuTemporary() is quite long,
FN_TRANSFORM_DOCUMENT_STRUCTURE handling inside that is also long, so
make that a separate function.

Change-Id: Ief9e3704b8148900eb972ce0c144c444b03e640c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193584
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins

diff --git a/sd/source/ui/inc/DrawViewShell.hxx 
b/sd/source/ui/inc/DrawViewShell.hxx
index 3b0b95428129..abac2af1c3c2 100644
--- a/sd/source/ui/inc/DrawViewShell.hxx
+++ b/sd/source/ui/inc/DrawViewShell.hxx
@@ -205,6 +205,7 @@ public:
 voidExecIMap( SfxRequest const & rReq );
 voidGetIMapState( SfxItemSet& rSet );
 
+voidFuTransformDocumentStructure(SfxRequest& rReq);
 voidFuTemporary(SfxRequest& rReq);
 voidFuPermanent(SfxRequest& rReq);
 voidFuSupport(SfxRequest& rReq);
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index b3616e46c1cf..79bc59887adf 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -668,6 +668,563 @@ public:
 }
 }
 
+void DrawViewShell::FuTransformDocumentStructure(SfxRequest& rReq)
+{
+// get the parameter, what to transform
+OUString aDataJson;
+const SfxStringItem* pDataJson = rReq.GetArg(FN_PARAM_1);
+if (pDataJson)
+{
+aDataJson = pDataJson->GetValue();
+aDataJson = rtl::Uri::decode(aDataJson, rtl_UriDecodeStrict, 
RTL_TEXTENCODING_UTF8);
+}
+
+// parse the JSON transform parameter
+boost::property_tree::ptree aTree;
+std::stringstream aStream(
+(std::string(OUStringToOString(aDataJson, RTL_TEXTENCODING_UTF8;
+try
+{
+boost::property_tree::read_json(aStream, aTree);
+}
+catch (...)
+{
+lcl_LogWarning("FillApi Transform parameter, Wrong JSON format. ");
+throw;
+}
+
+// Iterate through the JSON data loaded into a tree structure
+for (const auto& aItem : aTree)
+{
+if (aItem.first == "Transforms")
+{
+// Handle all transformations
+for (const auto& aItem2Obj : aItem.second)
+{
+// handle `"Transforms": { `  and `"Transforms": [` cases as 
well
+// if an element is an object `{...}`, then get the first 
element of the object
+const auto& aItem2
+= aItem2Obj.first == "" ? 
*aItem2Obj.second.ordered_begin() : aItem2Obj;
+
+//jump to slide
+if (aItem2.first == "SlideCommands")
+{
+int nActPageId = -1;
+int nNextPageId = 0;
+for (const auto& aItem3Obj : aItem2.second)
+{
+// It accept direct property, or object as well
+const auto& aItem3 = aItem3Obj.first == ""
+ ? 
*aItem3Obj.second.ordered_begin()
+ : aItem3Obj;
+
+sal_uInt16 nPageCount
+= GetDoc()->GetSdPageCount(PageKind::Standard);
+sal_uInt16 nMasterPageCount
+= 
GetDoc()->GetMasterSdPageCount(PageKind::Standard);
+
+if (nActPageId != nNextPageId)
+{
+// Make it sure it always point to a real page
+if (nNextPageId < 0)
+nNextPageId = 0;
+if (nNextPageId >= nPageCount)
+nNextPageId = nPageCount - 1;
+
+nActPageId = nNextPageId;
+// Make sure nActPageId is the current Page
+maTabControl->SetCurPageId(nActPageId);
+SdPage* pPageStandard
+= GetDoc()->GetSdPage(nActPageId, 
PageKind::Standard);
+mpDrawView->ShowSdrPage(pPageStandard);
+}
+
+if (aItem3.first == "JumpToSlide")
+{
+std::string aIndex = 
aItem3.second.get_value();
+if (aIndex == "last")
+{
+nNextPageId = nPageCount - 1;
+}
+ 

core.git: sd/source

2025-11-07 Thread Caolán McNamara (via logerrit)
 sd/source/filter/eppt/epptso.cxx |   10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

New commits:
commit 6a91d66a9339a0479b832dcabcbeee63a71a0d2a
Author: Caolán McNamara 
AuthorDate: Mon Nov 3 08:34:32 2025 +
Commit: Caolán McNamara 
CommitDate: Fri Nov 7 17:36:28 2025 +0100

cid#1660467 related Division or modulo by float zero

Change-Id: Ie5348068a7d56fd81abf98c8449af251f9fba905
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193569
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx
index 2ed414db9bdb..8676a3f9aee8 100644
--- a/sd/source/filter/eppt/epptso.cxx
+++ b/sd/source/filter/eppt/epptso.cxx
@@ -93,7 +93,9 @@ sal_uInt16 PPTExBulletProvider::GetId(Graphic const & 
rGraphic, Size& rGraphicSi
 SizeaPrefSize( rGraphic.GetPrefSize() );
 Bitmap  aBmp( rGraphic.GetBitmap() );
 
-if ( rGraphicSize.Width() && rGraphicSize.Height() )
+const auto nGraphicWidth = rGraphicSize.Width();
+const auto nGraphicHeight = rGraphicSize.Height();
+if (nGraphicWidth && nGraphicHeight)
 {
 if (aPrefSize.IsEmpty())
 {
@@ -102,7 +104,7 @@ sal_uInt16 PPTExBulletProvider::GetId(Graphic const & 
rGraphic, Size& rGraphicSi
 else
 {
 double  fQ1 = static_cast(aPrefSize.Width()) / 
static_cast(aPrefSize.Height());
-double  fQ2 = 
static_cast(rGraphicSize.Width()) / 
static_cast(rGraphicSize.Height());
+double  fQ2 = static_cast(nGraphicWidth) / 
static_cast(nGraphicHeight);
 double  fXScale = 1;
 double  fYScale = 1;
 
@@ -114,8 +116,8 @@ sal_uInt16 PPTExBulletProvider::GetId(Graphic const & 
rGraphic, Size& rGraphicSi
 if ( ( fXScale != 1.0 ) || ( fYScale != 1.0 ) )
 {
 aBmp.Scale( fXScale, fYScale );
-rGraphicSize = Size( 
static_cast(static_cast(rGraphicSize.Width()) / fXScale + 
0.5 ),
- 
static_cast(static_cast(rGraphicSize.Height()) / fYScale + 
0.5 ) );
+rGraphicSize = Size( 
static_cast(static_cast(nGraphicWidth) / fXScale + 0.5 ),
+ 
static_cast(static_cast(nGraphicHeight) / fYScale + 0.5 ) );
 
 aMappedGraphic = Graphic( aBmp );
 aGraphicObject.SetGraphic(aMappedGraphic);


core.git: sd/source vcl/unx

2025-11-07 Thread Michael Weghorn (via logerrit)
 sd/source/ui/slideshow/showwin.cxx |6 --
 vcl/unx/gtk3/gtkinst.cxx   |   17 +
 2 files changed, 1 insertion(+), 22 deletions(-)

New commits:
commit 1d1e9af105dabddb14c2d04702754161a5d3fee7
Author: Michael Weghorn 
AuthorDate: Thu Nov 6 10:59:55 2025 +0100
Commit: Michael Weghorn 
CommitDate: Fri Nov 7 09:45:12 2025 +0100

gtk3: Drop now obsolete workaround for GTK < 3.24

The underlying problem was fixed in GTK 3.24, so this
workaround is no longer needed after

commit c392f7b8a614c7ef32cfa9888aeb06b27b535390
Author: Michael Weghorn 
Date:   Wed Nov 5 17:44:57 2025 +0100

gtk3: Require GTK >= 3.24

Change-Id: Idf5434f57e14285c2a0d3de1ab36e4eafeea9400
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193523
Reviewed-by: Michael Weghorn 
Tested-by: Jenkins

diff --git a/sd/source/ui/slideshow/showwin.cxx 
b/sd/source/ui/slideshow/showwin.cxx
index 816ccfc3f11c..dc0a55d2ca2e 100644
--- a/sd/source/ui/slideshow/showwin.cxx
+++ b/sd/source/ui/slideshow/showwin.cxx
@@ -98,12 +98,6 @@ void ShowWindow::dispose()
 
 void ShowWindow::KeyInput(const KeyEvent& rKEvt)
 {
-// Ignore workaround of https://gitlab.gnome.org/GNOME/gtk/issues/1785
-// See calls to GtkSalFrame::makeFakeKeyPress (Fixed in GTK 3.24)
-bool bFakeKeyPress = rKEvt.GetKeyCode().GetFullCode() == 0;
-if (bFakeKeyPress)
-return;
-
 bool bReturn = false;
 
 if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index c30b7879fca4..47bfa4073d9e 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -11299,20 +11299,7 @@ public:
 pWidget = getPopupRect(pWidget, rRect, aRect);
 gtk_menu_attach_to_widget(m_pMenu, pWidget, nullptr);
 
-// Send a keyboard event through gtk_main_do_event to toggle any 
active tooltip offs
-// before trying to launch the menu
-// https://gitlab.gnome.org/GNOME/gtk/issues/1785
-// Fixed in GTK 3.24
-GdkEvent *pKeyEvent = GtkSalFrame::makeFakeKeyPress(pWidget);
-gtk_main_do_event(pKeyEvent);
-
 GdkEvent *pTriggerEvent = gtk_get_current_event();
-bool bEventOwnership = true;
-if (!pTriggerEvent)
-{
-pTriggerEvent = pKeyEvent;
-bEventOwnership = false;
-}
 
 bool bSwapForRTL = SwapForRTL(pWidget);
 
@@ -11330,10 +11317,8 @@ public:
 else
 gtk_menu_popup_at_rect(m_pMenu, widget_get_surface(pWidget), 
&aRect, GDK_GRAVITY_NORTH_EAST, GDK_GRAVITY_NORTH_WEST, pTriggerEvent);
 }
-if (bEventOwnership)
+if (pTriggerEvent)
 gdk_event_free(pTriggerEvent);
-
-gdk_event_free(pKeyEvent);
 #endif
 
 if (g_main_loop_is_running(pLoop))


core.git: sd/source

2025-11-04 Thread Andreas Heinisch (via logerrit)
 sd/source/ui/view/drviews7.cxx |8 
 sd/source/ui/view/sdview2.cxx  |9 ++---
 sd/source/ui/view/sdview3.cxx  |7 +++
 3 files changed, 21 insertions(+), 3 deletions(-)

New commits:
commit d2257fbe9111ba75bd8235f4d3089253a1dafc04
Author: Andreas Heinisch 
AuthorDate: Tue Oct 28 08:11:26 2025 +0100
Commit: Andreas Heinisch 
CommitDate: Tue Nov 4 21:43:14 2025 +0100

tdf#139269 - Prevent pasting text into master pages

Prevent text pasting into readonly areas of master views.

Change-Id: I733a54fb19101dd813883ba76d4f4410998d0e67
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193071
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch 

diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx
index 2ba69e13f035..bd847be0eb42 100644
--- a/sd/source/ui/view/drviews7.cxx
+++ b/sd/source/ui/view/drviews7.cxx
@@ -856,6 +856,14 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet )
 rSet.Put(SfxBoolItem(SID_PAGEMODE, false));
 rSet.Put(SfxBoolItem(SID_MASTERPAGE, true));
 
+// tdf#139269 - disable menu entries to paste text into read only 
areas of master views
+const OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView();
+if (pOlView && pOlView->IsReadOnly())
+{
+rSet.DisableItem(SID_PASTE);
+rSet.DisableItem(SID_PASTE_UNFORMATTED);
+}
+
 /**
 * Background page mode
 **/
diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx
index 7ce74bc04c25..ae24b8e4f288 100644
--- a/sd/source/ui/view/sdview2.cxx
+++ b/sd/source/ui/view/sdview2.cxx
@@ -285,10 +285,13 @@ void View::DoPaste (::sd::Window* pWindow,bool 
/*bMergeMasterPagesOnly*/)
 
 if( pOLV && EditEngine::HasValidData( aDataHelper.GetTransferable() ) )
 {
-const_cast< OutlinerView* >(pOLV)->PasteSpecial();
+SdrObject* pObj = GetTextEditObject();
+SdPage* pPage = static_cast(pObj ? 
pObj->getSdrPageFromSdrObject() : nullptr);
+// tdf#139269 - prevent text pasting into readonly areas of master 
views
+if (pPage && pPage->IsMasterPage() && pOLV->IsReadOnly())
+return;
 
-SdrObject*  pObj = GetTextEditObject();
-SdPage* pPage = static_cast( pObj ? 
pObj->getSdrPageFromSdrObject() : nullptr );
+const_cast< OutlinerView* >(pOLV)->PasteSpecial();
 ::Outliner& rOutliner = pOLV->GetOutliner();
 
 if( pObj && pPage && pPage->GetPresObjKind(pObj) == PresObjKind::Title 
)
diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index 6d89abe6b32b..6d3bc7e4d519 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -1633,6 +1633,13 @@ bool View::InsertData( const TransferableDataHelper& 
rDataHelper,
 
 if( pOLV )
 {
+// tdf#139269 - prevent text pasting into readonly areas 
of master views
+if (!pPage)
+pPage = 
static_cast(GetSdrPageView()->GetPage());
+
+if (pPage && pPage->IsMasterPage() && pOLV->IsReadOnly())
+return false;
+
 pOLV->InsertText( aOUString );
 return true;
 }


core.git: sd/source

2025-11-03 Thread Caolán McNamara (via logerrit)
 sd/source/ui/view/drviews9.cxx |   26 +-
 1 file changed, 13 insertions(+), 13 deletions(-)

New commits:
commit 63f85e4e74dff8982b1be11d70a547458fbfad8e
Author: Caolán McNamara 
AuthorDate: Sun Nov 2 15:01:58 2025 +
Commit: Caolán McNamara 
CommitDate: Mon Nov 3 10:39:07 2025 +0100

cid#1659749 silence Division or modulo by float zero

Change-Id: Iab7cf97f85895b46744161e5e107b75cb33c1d8c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193326
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/sd/source/ui/view/drviews9.cxx b/sd/source/ui/view/drviews9.cxx
index d13e7c9b9280..ce9de552d30f 100644
--- a/sd/source/ui/view/drviews9.cxx
+++ b/sd/source/ui/view/drviews9.cxx
@@ -96,30 +96,30 @@ void DrawViewShell::ExecGallery(SfxRequest const & rReq)
 aPageSize.AdjustHeight( -(pPage->GetUpperBorder() + 
pPage->GetLowerBorder()) );
 
 // If the image is too large we make it fit into the page
-if ( ( ( aSize.Height() > aPageSize.Height() ) || ( aSize.Width()   > 
aPageSize.Width() ) ) &&
-aSize.Height() && aPageSize.Height() )
+const auto nSizeHeight = aSize.Height(), nSizeWidth = aSize.Width();
+const auto nPageHeight = aPageSize.Height(), nPageWidth = 
aPageSize.Width();
+if ((nSizeHeight > nPageHeight || nSizeWidth > nPageWidth) &&
+nSizeHeight && nPageHeight)
 {
-float fGrfWH =  static_cast(aSize.Width()) /
-static_cast(aSize.Height());
-float fWinWH =  static_cast(aPageSize.Width()) /
-static_cast(aPageSize.Height());
+float fGrfWH =  static_cast(nSizeWidth) / 
static_cast(nSizeHeight);
+float fWinWH =  static_cast(nPageWidth) / 
static_cast(nPageHeight);
 
 // constrain size to page size if necessary
-if ((fGrfWH != 0.F) && (fGrfWH < fWinWH))
+if (fGrfWH < fWinWH)
 {
-aSize.setWidth( static_cast<::tools::Long>(aPageSize.Height() 
* fGrfWH) );
-aSize.setHeight( aPageSize.Height() );
+aSize.setWidth( static_cast<::tools::Long>(nPageHeight * 
fGrfWH) );
+aSize.setHeight( nPageHeight );
 }
 else
 {
-aSize.setWidth( aPageSize.Width() );
-aSize.setHeight( static_cast<::tools::Long>(aPageSize.Width() 
/ fGrfWH) );
+aSize.setWidth( nPageWidth );
+aSize.setHeight( static_cast<::tools::Long>(nPageWidth / 
fGrfWH) );
 }
 }
 
 // set output rectangle for graphic
-Point aPnt ((aPageSize.Width()  - aSize.Width())  / 2,
-(aPageSize.Height() - aSize.Height()) / 2);
+Point aPnt ((nPageWidth  - aSize.Width())  / 2,
+(nPageHeight - aSize.Height()) / 2);
 aPnt += Point(pPage->GetLeftBorder(), pPage->GetUpperBorder());
 ::tools::Rectangle aRect (aPnt, aSize);
 


core.git: sd/source

2025-10-31 Thread Jaume Pujantell (via logerrit)
 sd/source/ui/view/drviews1.cxx |   19 +++
 1 file changed, 11 insertions(+), 8 deletions(-)

New commits:
commit bebc0372cb5cfd608047402cb86c5a20285b416e
Author: Jaume Pujantell 
AuthorDate: Tue Jul 15 17:02:32 2025 +0200
Commit: Jaume Pujantell 
CommitDate: Fri Oct 31 13:31:07 2025 +0100

lokit pdfium: send empty link data

This is a follow-up to b307d3f997eee3014697734f04ad99b4f3ef50ae.
Send and empty status if there are no links so online knows to erase the
link data.

Change-Id: I7695ed87f7e0c19338b0f42ad3c860035ffd0d76
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187926
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit 3217f0d4b368a96b30909e2aa7d4afc9a985a88b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193255
Tested-by: Jenkins
Reviewed-by: Jaume Pujantell 

diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx
index 784717d04792..e6eef33c79c3 100644
--- a/sd/source/ui/view/drviews1.cxx
+++ b/sd/source/ui/view/drviews1.cxx
@@ -803,19 +803,22 @@ namespace
 {
 void notifyLinkAnnotations(SfxViewShell* pViewShell, SdPage* pPage)
 {
-if (!pViewShell || !pPage || !pPage->hasLinkAnnotations())
+if (!pViewShell || !pPage)
 return;
 ::tools::JsonWriter jsonWriter;
 jsonWriter.put("commandName", "PageLinks");
 {
-auto jsonLinks = jsonWriter.startArray("links");
-for (const auto& link : pPage->getLinkAnnotations())
+auto jsonState = jsonWriter.startNode("state");
 {
-auto jsonLink = jsonWriter.startStruct();
-std::stringstream ss;
-ss << link.first;
-jsonWriter.put("rectangle", ss.str());
-jsonWriter.put("uri", link.second);
+auto jsonLinks = jsonWriter.startArray("links");
+for (const auto& link : pPage->getLinkAnnotations())
+{
+auto jsonLink = jsonWriter.startStruct();
+std::stringstream ss;
+ss << link.first;
+jsonWriter.put("rectangle", ss.str());
+jsonWriter.put("uri", link.second);
+}
 }
 }
 OString aPayload = jsonWriter.finishAndGetAsOString();


core.git: sd/source

2025-10-29 Thread Karthik (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 17410704f77cb7dca256fa787b1e9c8277dc208b
Author: Karthik 
AuthorDate: Fri Oct 10 08:27:38 2025 +0530
Commit: Michael Stahl 
CommitDate: Wed Oct 29 15:39:00 2025 +0100

impress interop: PPT->PPTX invalid time value in 

Saving a PPT file as PPTX could sometimes corrupt the output because of
decimal ST_TLTime value.

ST_TLTime should be unsigned int ([ISO/IEC 29500-1] 19.7.38).

Change-Id: I2bfbec3a4970918e8c58b41c531799796e91668c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192138
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit ec4a63decfe6c6613e3d3b7097359c26fa5b49c7)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193072
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index 56cbbbea030c..d8407b09c093 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -938,9 +938,11 @@ void 
PPTXAnimationExport::WriteAnimationNodeCommonPropsStart()
 {
 const char* sType = 
convertTextAnimationType(xIterate->getIterateType());
 
+// ST_TLTime should be unsigned int ([ISO/IEC 29500-1] 19.7.38)
+sal_uInt32 nTime = 
static_cast(xIterate->getIterateInterval() * 1000);
+
 mpFS->startElementNS(XML_p, XML_iterate, XML_type, sType);
-mpFS->singleElementNS(XML_p, XML_tmAbs, XML_val,
-  
OString::number(xIterate->getIterateInterval() * 1000));
+mpFS->singleElementNS(XML_p, XML_tmAbs, XML_val, 
OString::number(nTime));
 mpFS->endElementNS(XML_p, XML_iterate);
 }
 }


core.git: sd/source

2025-10-29 Thread Karthik (via logerrit)
 sd/source/filter/ppt/pptin.cxx |   22 --
 1 file changed, 20 insertions(+), 2 deletions(-)

New commits:
commit 86d8581991c3fdcd28a77cce335f58bd0214908c
Author: Karthik 
AuthorDate: Fri Oct 10 18:46:01 2025 +0530
Commit: Michael Stahl 
CommitDate: Wed Oct 29 15:35:47 2025 +0100

tdf#168736: Fix PPT->PPTX internal-link interoperability issue

When PPT files with internal slide links are saved as PPTX, it results
in corrupted XML output.

Properly importing internal links when loading a PPT file fixes this
issue. The fix follows PPTX standards for saving internal links.

Change-Id: Ic554dae72e7089a005ed24dc697c3db17187cc83
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192169
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit 6faf26e5de4aa21980f2ee49253a5e0854d2e62d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193077
Tested-by: Jenkins

diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
index fdbfa4becb0a..b39dbc73baed 100644
--- a/sd/source/filter/ppt/pptin.cxx
+++ b/sd/source/filter/ppt/pptin.cxx
@@ -380,6 +380,14 @@ bool ImplSdPPTImport::Import()
 
 nPropCount /= 6;// 6 properties per 
hyperlink
 
+// if a PPT contains internal links we can 
get the following SubAddresses
+// "-1,-1,NEXT" | "-1,-1,PREV" | 
"-1,-1,FIRST" | "-1,-1,LAST"
+static const std::map 
aInternalLinks
+= { { "NEXT", "nextslide" },
+{ "PREV", "previousslide" },
+{ "FIRST", "firstslide" },
+{ "LAST", "lastslide" } };
+
 for ( i = 0; i < nPropCount; i++ )
 {
 SdHyperlinkEntry aHyperlink;
@@ -489,9 +497,19 @@ bool ImplSdPPTImport::Import()
 aHyperlink.aConvSubString 
= SdResId( STR_PAGE ) + " " + mrDoc.CreatePageNumValue( 
static_cast(nPageNumber) + 1 );
 }
 } else {
-// if sub address is given but 
not internal, use it as it is
-if ( 
aHyperlink.aConvSubString.isEmpty() )
+// check for internal slide 
links
+OUString 
aToken(OStringToOUString(
+aStringAry[2], 
RTL_TEXTENCODING_UTF8));
+
+auto it = 
aInternalLinks.find(aToken);
+if (it != aInternalLinks.end())
+{
+aHyperlink.aConvSubString
+= "action?jump=" + 
it->second;
+}
+else if 
(aHyperlink.aConvSubString.isEmpty())
 {
+// if sub address is given 
but not internal, use it as it is
 aHyperlink.aConvSubString 
= aString;
 }
 }


core.git: sd/source

2025-10-28 Thread Karthik Godha (via logerrit)
 sd/source/filter/eppt/pptx-epptooxml.cxx |6 ++
 1 file changed, 6 insertions(+)

New commits:
commit 33515aec647899e2a96d55913699ffa12e78fd45
Author: Karthik Godha 
AuthorDate: Tue Oct 21 19:09:45 2025 +0530
Commit: Michael Stahl 
CommitDate: Tue Oct 28 19:41:44 2025 +0100

tdf#168773: PPT->PPTX incorrect background in XML

While exporting to PPTX check whether BITMAP filltypes have graphic
content before starting  element

Change-Id: I5dfd57538fbd3f8c834495ba76535c641b7fa06f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192795
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Michael Stahl 
(cherry picked from commit c5eb2b9def1c1d189da71d8bb27f9fddd0a63ef7)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193074
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx 
b/sd/source/filter/eppt/pptx-epptooxml.cxx
index aa435816f89c..6ae52a0092b3 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -949,6 +949,12 @@ void PowerPointExport::ImplWriteBackground(const 
FSHelperPtr& pFS, const Referen
 aFillStyle == FillStyle_HATCH)
 return;
 
+// For BITMAP fill style, check if graphic is valid before writing bgPr
+if (aFillStyle == FillStyle_BITMAP
+&& (!ImplGetPropertyValue(rXPropSet, u"FillBitmap"_ustr)
+|| !mAny.has>()))
+return;
+
 pFS->startElementNS(XML_p, XML_bg);
 pFS->startElementNS(XML_p, XML_bgPr);
 


core.git: sd/source

2025-10-28 Thread Karthik (via logerrit)
 sd/source/filter/eppt/pptx-animations.cxx |5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit 06df3ad0b2fa771757c90f53dd1f33265a3912dc
Author: Karthik 
AuthorDate: Thu Oct 9 22:58:31 2025 +0530
Commit: Michael Stahl 
CommitDate: Tue Oct 28 19:39:17 2025 +0100

impress: fix PPT->PPTX time animate value interoperability issue

Saving a PPT file as PPTX could sometimes corrupt the output because of
negative animation time(ST_TLTimeAnimateValueTime).

ST_TLTimeAnimateValueTime can't be negative ([ISO/IEC 29500-1] 19.7.39).

The patch ensures that animation times values are non-negative during
PPTX export

Change-Id: I366a9acfc59231545737d67859dfcfd0a4beb886
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192122
Reviewed-by: Michael Stahl 
Tested-by: Jenkins CollaboraOffice 
(cherry picked from commit 8dce45fde0f23f2f3083b313676889016775d2aa)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193078
Tested-by: Jenkins

diff --git a/sd/source/filter/eppt/pptx-animations.cxx 
b/sd/source/filter/eppt/pptx-animations.cxx
index 8f5389871dc7..56cbbbea030c 100644
--- a/sd/source/filter/eppt/pptx-animations.cxx
+++ b/sd/source/filter/eppt/pptx-animations.cxx
@@ -220,9 +220,12 @@ void WriteAnimateValues(const FSHelperPtr& pFS, const 
Reference& rXAni
 SAL_INFO("sd.eppt", "animate value " << i << ": " << aKeyTimes[i]);
 if (aValues[i].hasValue())
 {
+// ST_TLTimeAnimateValueTime can't be negative ([ISO/IEC 29500-1] 
19.7.39)
+sal_uInt32 nTime = static_cast(std::max(0.0, 
aKeyTimes[i] * 10.0));
+
 pFS->startElementNS(XML_p, XML_tav, XML_fmla,
 sax_fastparser::UseIf(sFormula, 
!sFormula.isEmpty()), XML_tm,
-
OString::number(static_cast(aKeyTimes[i] * 10.0)));
+sax_fastparser::UseIf(OString::number(nTime), 
nTime != 0));
 pFS->startElementNS(XML_p, XML_val);
 ValuePair aPair;
 if (aValues[i] >>= aPair)


core.git: sd/source

2025-10-27 Thread Gülşah Köse (via logerrit)
 sd/source/ui/tools/SlideshowLayerRenderer.cxx |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 60af166fcd84c99bf7caef5992be439ea2893bbe
Author: Gülşah Köse 
AuthorDate: Wed Aug 13 15:46:48 2025 +0300
Commit: Gülşah Köse 
CommitDate: Mon Oct 27 09:22:18 2025 +0100

cool#12574 Show empty placeholder objects if they have background or 
linestyle

Signed-off-by: Gülşah Köse 
Change-Id: Iebb32f0d18de271ea14bf77565c72d1b38073b30
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189512
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Tomaž Vajngerl 
Reviewed-by: Szymon Kłos 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193014
Tested-by: Jenkins

diff --git a/sd/source/ui/tools/SlideshowLayerRenderer.cxx 
b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
index 53cba4849b64..7f025300dde0 100644
--- a/sd/source/ui/tools/SlideshowLayerRenderer.cxx
+++ b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
@@ -460,7 +460,8 @@ public:
 SdrObject* pObject = rOriginal.GetViewContact().TryToGetSdrObject();
 
 // Check if we are rendering an object that is valid to render 
(exists, and not empty)
-if (pObject == nullptr || pObject->IsEmptyPresObj())
+if (pObject == nullptr
+|| (pObject->IsEmptyPresObj() && !(pObject->HasFillStyle() || 
pObject->HasLineStyle(
 return;
 
 SdrPage* pPage = pObject->getSdrPageFromSdrObject();


core.git: sd/source

2025-10-23 Thread Jim Raykowski (via logerrit)
 sd/source/ui/dlg/sdtreelb.cxx |   13 ++---
 1 file changed, 10 insertions(+), 3 deletions(-)

New commits:
commit 1fd897efbb573464e5d8197ece4003736c7b69f9
Author: Jim Raykowski 
AuthorDate: Sat Oct 18 14:55:26 2025 -0800
Commit: Jim Raykowski 
CommitDate: Thu Oct 23 22:02:52 2025 +0200

tdf#130196 sd_navigator: show correct icon when dnd nav-ordering

For x11 a no drop icon was shown for single page documents when nav-
ordering objects by dnd in the Navigator objects tree.

Change-Id: If84b34a764527db57d9645ec7d23c8b1d4c10942
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192657
Tested-by: Jenkins
Reviewed-by: Jim Raykowski 

diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx
index bf30a390c259..05544e0cd26c 100644
--- a/sd/source/ui/dlg/sdtreelb.cxx
+++ b/sd/source/ui/dlg/sdtreelb.cxx
@@ -902,10 +902,17 @@ void SdPageObjsTLV::Select()
 
 if( eDragType == NAVIGATOR_DRAGTYPE_LINK )
 nDNDActions = DND_ACTION_LINK;  // Either COPY *or* LINK, never both!
-else if (m_pDoc->GetSdPageCount(PageKind::Standard) == 1)
+else
 {
-// Can not move away the last slide in a document.
-nDNDActions = DND_ACTION_COPY;
+// Only for page/slide entry and only if page/slide entry dragging is 
re-enabled.
+// Commit 1b031eb1ba6c529ce67ff8f471afee414d64a098 disabled page/slide 
entry dragging.
+std::unique_ptr xIter(m_xTreeView->make_iterator());
+if (m_xTreeView->get_cursor(xIter.get()) && 
m_xTreeView->get_iter_depth(*xIter) == 0
+&& m_pDoc->GetSdPageCount(PageKind::Standard) == 1)
+{
+// Can not move away the last slide in a document.
+nDNDActions = DND_ACTION_COPY;
+}
 }
 
 // object is destroyed by internal reference mechanism


core.git: sd/source

2025-10-23 Thread Xisco Fauli (via logerrit)
 sd/source/ui/view/DocumentRenderer.cxx |6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 9a406c26e8b8d09b99c949192bc731ba6126cef0
Author: Xisco Fauli 
AuthorDate: Thu Oct 23 10:34:40 2025 +0200
Commit: Caolán McNamara 
CommitDate: Thu Oct 23 11:58:45 2025 +0200

tdf#169015: GetOutlinerParaObject might return nullptr

Regression from
commit 43e511e642a2ce7026b30ea5c212940ff3eb522e
Author: Tibor Nagy 
Date:   Fri Nov 29 02:10:21 2024 +0100

tdf#88226 sd: fix cutting off the overflow text on the notes print page

Change-Id: I4e25760afe4bd535d1accf8291f9cbb4457625ad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192895
Reviewed-by: Caolán McNamara 
Tested-by: Jenkins
Tested-by: Caolán McNamara 

diff --git a/sd/source/ui/view/DocumentRenderer.cxx 
b/sd/source/ui/view/DocumentRenderer.cxx
index eca3a27bc3ef..324467b32b78 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -889,7 +889,8 @@ namespace {
 pOut->SetPaperSize(aNotesSize);
 pOut->SetUpdateLayout(true);
 pOut->Clear();
-pOut->SetText(*pNotesObj->GetOutlinerParaObject());
+if (OutlinerParaObject* pOutlinerParaObject = 
pNotesObj->GetOutlinerParaObject())
+pOut->SetText(*pOutlinerParaObject);
 
 bool bAutoGrow = 
pNotesObj->GetMergedItem(SDRATTR_TEXT_AUTOGROWHEIGHT).GetValue();
 
@@ -2523,7 +2524,8 @@ private:
 pOut->SetPaperSize(nNotesObjSize);
 pOut->SetUpdateLayout(true);
 pOut->Clear();
-pOut->SetText(*pNotesObj->GetOutlinerParaObject());
+if (OutlinerParaObject* pOutlinerParaObject = 
pNotesObj->GetOutlinerParaObject())
+pOut->SetText(*pOutlinerParaObject);
 
 sal_Int32 nFirstPageBottomMargin = 0;
 ::tools::Long nNotesHeight = nNotesObjSize.Height();


core.git: sd/source

2025-10-22 Thread Jim Raykowski (via logerrit)
 sd/source/ui/slidesorter/controller/SlsClipboard.cxx |8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

New commits:
commit c78a692927ad85700e9121edecd32a263ba80a24
Author: Jim Raykowski 
AuthorDate: Sat Oct 18 21:31:32 2025 -0800
Commit: Jim Raykowski 
CommitDate: Thu Oct 23 05:44:03 2025 +0200

tdf#168951 sd: fix crash when dragging an unnamed object from

Navigator and dropping it in the Pages pane

The patch prevents dropping of unnamed objects by checking
SdTransferable::IsPageTransferable()

Comment in SdPageObjsTLV::DoDrag():
"For shapes without a user supplied name (the automatically created name
does not count), a different drag and drop technique is used."

std::shared_ptr
Clipboard::CreateTransferableUserData (SdTransferable* pTransferable)
if (nPageIndex == SDRPAGE_NOTFOUND) break;

This is why SdTransferable::SetPageBookmarks does not get called and
therefore mbPageTransferable is not set true.

Change-Id: Ia4eddb6c384e6e73047a0cddd4cd59c20562aa5d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192675
Tested-by: Jenkins
Reviewed-by: Jim Raykowski 

diff --git a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx 
b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx
index b5f9a652f269..613f558b7464 100644
--- a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx
@@ -658,7 +658,13 @@ sal_Int8 Clipboard::AcceptDrop (
 // explicitly set to move or link, and when the source and
 // target models are not the same.
 SdTransferable* pDragTransferable = SdModule::get()->pTransferDrag;
-if (pDragTransferable != nullptr
+
+if (eDropType == DT_PAGE_FROM_NAVIGATOR && pDragTransferable
+&& !pDragTransferable->IsPageTransferable())
+{
+nAction = DND_ACTION_NONE;
+}
+else if (pDragTransferable != nullptr
 && pDragTransferable->IsPageTransferable()
 && ((rEvent.maDragEvent.DropAction
 & 
css::datatransfer::dnd::DNDConstants::ACTION_DEFAULT) != 0)


core.git: sd/source

2025-10-22 Thread Henry Castro (via logerrit)
 sd/source/ui/unoidl/unomodel.cxx |5 +
 1 file changed, 5 insertions(+)

New commits:
commit a2aa2f45bd4ae3523de88468af953eb7db7a1766
Author: Henry Castro 
AuthorDate: Thu Sep 18 09:50:32 2025 -0400
Commit: Henry Castro 
CommitDate: Wed Oct 22 17:51:33 2025 +0200

sd: add title JSON property

Add title string for screen reader announcements

Change-Id: I8ad2c72f4dc87f85a9210a5a80dfdaeadf1f8a1e
Signed-off-by: Henry Castro 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191127
Reviewed-by: Caolán McNamara 
Tested-by: Caolán McNamara 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192848
Tested-by: Jenkins

diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 35877fc697d2..970942f22bee 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -1404,6 +1404,11 @@ void AnimationsExporter::exportAnimate(const 
Reference& xAnimate)
 {
 anim::convertTarget(sTmp, aTemp);
 mrWriter.put("targetElement", sTmp.makeStringAndClear());
+SdrObject* pObject = getTargetObject(aTemp);
+if (pObject)
+{
+mrWriter.put("title", pObject->GetTitle());
+}
 }
 nTemp = xAnimate->getSubItem();
 if (nTemp)


  1   2   3   4   5   6   7   8   9   10   >