sw/qa/uitest/data/tdf150443.docx |binary sw/qa/uitest/writer_tests7/tdf150443.py | 46 ++++++++++++++++++++++++++++++++ sw/source/uibase/misc/redlndlg.cxx | 4 ++ 3 files changed, 50 insertions(+)
New commits: commit f4668540ff7256bb0ddd382dfaf9f3499e99128a Author: László Németh <nem...@numbertext.org> AuthorDate: Thu Aug 18 12:00:32 2022 +0200 Commit: László Németh <nem...@numbertext.org> CommitDate: Fri Aug 19 08:39:15 2022 +0200 tdf#150443 sw: fix crash of rejecting table row deletion Joining "Delete" redlines of deleted table row with overlapping tracked formatting change with same time stamp resulted bad tree parent in Manage Changes dialog window (tracked formatting change instead of tracked deletion, see its pencil icon before this fix), crashing at its rejection. Regression from commit eebe4747d2d13545004937bb0267ccfc8ab9d63f "tdf#144270 sw: manage tracked table (row) deletion/insertion". Change-Id: Ia0f0b1fdff96f4acbe14025f8016e39ce95c7f09 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138474 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/sw/qa/uitest/data/tdf150443.docx b/sw/qa/uitest/data/tdf150443.docx new file mode 100644 index 000000000000..162aec01f928 Binary files /dev/null and b/sw/qa/uitest/data/tdf150443.docx differ diff --git a/sw/qa/uitest/writer_tests7/tdf150443.py b/sw/qa/uitest/writer_tests7/tdf150443.py new file mode 100644 index 000000000000..8cca7c78e6c8 --- /dev/null +++ b/sw/qa/uitest/writer_tests7/tdf150443.py @@ -0,0 +1,46 @@ +# -*- 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 uitest.uihelper.common import get_state_as_dict, get_url_for_data_file +from libreoffice.uno.propertyvalue import mkPropertyValues + +class tdf150443(UITestCase): + + def test_tdf150443(self): + with self.ui_test.load_file(get_url_for_data_file("tdf150443.docx")) as document: + xWriterDoc = self.xUITest.getTopFocusWindow() + xWriterEdit = xWriterDoc.getChild("writer_edit") + xToolkit = self.xContext.ServiceManager.createInstance('com.sun.star.awt.Toolkit') + + # search term "Jump here!" + with self.ui_test.execute_modeless_dialog_through_command(".uno:SearchDialog", close_button="close") as xDialog: + searchterm = xDialog.getChild("searchterm") + searchterm.executeAction("TYPE", mkPropertyValues({"TEXT":"Jump here!"})) + xsearch = xDialog.getChild("search") + xsearch.executeAction("CLICK", tuple()) #first search + xToolkit.processEventsToIdle() + self.assertEqual(get_state_as_dict(xWriterEdit)["CurrentPage"], "4") + + # reject the tracked table row in Manage Changes dialog window + with self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptTrackedChanges", close_button="close") as xTrackDlg: + changesList = xTrackDlg.getChild("writerchanges") + + items = len(changesList.getChildren()) + + # select tree parent of the actual tracked row deletion in tree list + changesList.executeAction("TYPE", mkPropertyValues({"KEYCODE": "LEFT"})) + xToolkit.processEventsToIdle() + + # Without the fix in place, it would have crashed here + xAccBtn = xTrackDlg.getChild("reject") + xAccBtn.executeAction("CLICK", tuple()) + self.assertEqual(items - 1, len(changesList.getChildren())) + +# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sw/source/uibase/misc/redlndlg.cxx b/sw/source/uibase/misc/redlndlg.cxx index 0f05ba9e0977..7f61f8a7863f 100644 --- a/sw/source/uibase/misc/redlndlg.cxx +++ b/sw/source/uibase/misc/redlndlg.cxx @@ -831,7 +831,11 @@ void SwRedlineAcceptDlg::InsertParents(SwRedlineTable::size_type nStart, SwRedli else nNewTableParent = i; } + else + nPrevRowChange = SwRedlineTable::npos; } + else + nPrevRowChange = SwRedlineTable::npos; bool bRowChange(SwRedlineTable::npos != nLastChangeInRow);