sd/qa/uitest/impress_tests2/tdf130586.py                     |   54 +++++++++++
 sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx |    1 
 2 files changed, 55 insertions(+)

New commits:
commit 53746e60356f2afb16e7a06580ed809184a58861
Author:     Caolán McNamara <[email protected]>
AuthorDate: Sun Feb 22 17:38:20 2026 +0000
Commit:     Adolfo Jayme Barrientos <[email protected]>
CommitDate: Mon Feb 23 12:55:50 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]>
    (cherry picked from commit c963b8a01715f3b190d9ad38499b76fe48c4e3b1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200035
    Reviewed-by: Adolfo Jayme Barrientos <[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