emfio/source/reader/emfreader.cxx                            |    2 
 sd/qa/uitest/impress_tests2/tdf130586.py                     |   54 +++++++++++
 sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx |    1 
 3 files changed, 56 insertions(+), 1 deletion(-)

New commits:
commit 3dfbc9df7d18ad9a90564d5bc3481121514a1b0e
Author:     Caolán McNamara <[email protected]>
AuthorDate: Sun Feb 22 17:56:39 2026 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Sun Feb 22 20:42:22 2026 +0100

    ofz: Use-of-uninitialized-value
    
    there's a switch off this value before the mpInputStream->good() guard
    
    Change-Id: I8ac7ce45336d9edbfae2308af39632c9322b2526
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199992
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/emfio/source/reader/emfreader.cxx 
b/emfio/source/reader/emfreader.cxx
index cbcbd9efb508..d382d9b8138a 100644
--- a/emfio/source/reader/emfreader.cxx
+++ b/emfio/source/reader/emfreader.cxx
@@ -1883,7 +1883,7 @@ namespace emfio
                     case EMR_SMALLTEXTOUT :
                     {
                         sal_Int32   ptlReferenceX, ptlReferenceY;
-                        sal_uInt32  nLen, nOptions, nGfxMode;
+                        sal_uInt32  nLen, nOptions(0), nGfxMode;
                         float       fXScale, fYScale;
 
                         mpInputStream->ReadInt32( ptlReferenceX ).ReadInt32( 
ptlReferenceY )
commit c963b8a01715f3b190d9ad38499b76fe48c4e3b1
Author:     Caolán McNamara <[email protected]>
AuthorDate: Sun Feb 22 17:38:20 2026 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Sun Feb 22 20:42:15 2026 +0100

    Resolves: tdf#130586 reset mbPageEventOccurred in observation start
    
    mbPageEventOccurred was never reset between observations, so after a
    undo/redo involving page insertion/deletion, another undo/redo operation
    (e.g. layout changes) would assume it needed to do a fresh page
    selection.
    
    seen as a regression at:
    
    commit 13dfaa3c3704a5a963f9e1e5d45796472f43c80e
    Date:   Fri Dec 13 12:47:54 2019 +0000
    
        Resolves: tdf#129346 if nothing currently selected, select something
    
        in the slidesorter
    
    but really a problem since:
    
    commit a05fe3a8cfd4ec420eb6969d98f64e4308f14230
    Date:   Tue Nov 21 12:38:21 2017 +0000
    
        Resolves: tdf#100950 only update page selection if pages changed
    
    Change-Id: I86169faa9f0b2b2972dfe7065b29f94f6c6bcb85
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199990
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/sd/qa/uitest/impress_tests2/tdf130586.py 
b/sd/qa/uitest/impress_tests2/tdf130586.py
new file mode 100644
index 000000000000..0a8bf5e89205
--- /dev/null
+++ b/sd/qa/uitest/impress_tests2/tdf130586.py
@@ -0,0 +1,54 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+from uitest.framework import UITestCase
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+class tdf130586(UITestCase):
+
+    def test_run(self):
+        with self.ui_test.create_doc_in_start_center("impress") as document:
+            xTemplateDlg = self.xUITest.getTopFocusWindow()
+            xCancelBtn = xTemplateDlg.getChild("close")
+            self.ui_test.close_dialog_through_button(xCancelBtn)
+
+            xToolkit = 
self.xContext.ServiceManager.createInstance('com.sun.star.awt.Toolkit')
+
+            
self.assertEqual(document.CurrentController.getCurrentPage().Number, 1)
+
+            # Insert a new slide
+            self.xUITest.executeCommand(".uno:InsertPage")
+            xToolkit.processEventsToIdle()
+            
self.assertEqual(document.CurrentController.getCurrentPage().Number, 2)
+
+            # Change layout on slide 2
+            self.xUITest.executeCommand(".uno:AssignLayout?WhatLayout:long=1")
+            xToolkit.processEventsToIdle()
+            
self.assertEqual(document.CurrentController.getCurrentPage().Number, 2)
+
+            # Undo x2 (undo layout change, then undo insert slide)
+            self.xUITest.executeCommand(".uno:Undo")
+            xToolkit.processEventsToIdle()
+            
self.assertEqual(document.CurrentController.getCurrentPage().Number, 2)
+
+            self.xUITest.executeCommand(".uno:Undo")
+            xToolkit.processEventsToIdle()
+            
self.assertEqual(document.CurrentController.getCurrentPage().Number, 1)
+
+            # Redo x2 (redo insert slide, then redo layout change)
+            self.xUITest.executeCommand(".uno:Redo")
+            xToolkit.processEventsToIdle()
+            
self.assertEqual(document.CurrentController.getCurrentPage().Number, 2)
+
+            self.xUITest.executeCommand(".uno:Redo")
+            xToolkit.processEventsToIdle()
+            # Without the fix, this would fail with AssertionError: 2 != 1
+            
self.assertEqual(document.CurrentController.getCurrentPage().Number, 2)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx 
b/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx
index ba835c23b003..e5bc5ada632f 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx
@@ -90,6 +90,7 @@ void SelectionObserver::StartObservation()
     OSL_ASSERT(!mbIsObservationActive);
     maInsertedPages.clear();
     mbIsObservationActive = true;
+    mbPageEventOccurred = false;
 }
 
 void SelectionObserver::AbortObservation()

Reply via email to