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 a91ad83e5eb83625ee0e1c9250365c5dc494f845
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 13:03:44 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>
    (cherry picked from commit 6f05dea5d93445042775cb8c8a8dd400e4dda3a6)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138428
    Tested-by: Jenkins

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 2b12439494b8..a80fd90ee0f3 100644
--- a/sw/source/uibase/misc/redlndlg.cxx
+++ b/sw/source/uibase/misc/redlndlg.cxx
@@ -828,7 +828,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