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

Reply via email to