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()
