dev/null |binary sw/qa/uitest/writer_tests/trackedChanges.py | 17 ----------------- sw/source/uibase/misc/redlndlg.cxx | 22 ++++++++++++++++++++-- 3 files changed, 20 insertions(+), 19 deletions(-)
New commits: commit d1bb1f2f2c682ae0bac555b9e30bd0d19e624274 Author: Xisco Fauli <[email protected]> AuthorDate: Tue Jan 20 14:54:00 2026 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Tue Jan 20 15:42:02 2026 +0100 Revert "tdf#168737 sw interdependent redlines, reject all: fix ignored format redlines" This reverts commit ebaab7c8aa64102ec7f507501dc421925f5927fb. Reason for revert: This is causing https://ci.libreoffice.org/job/gerrit_linux_clang_dbgutil to fail in libreoffice-25-8 branch with ====================================================================== FAIL: test_reject_all_deletes_all_redlines (trackedChanges.trackedchanges.test_reject_all_deletes_all_redlines) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_clang_dbgutil_64/sw/qa/uitest/writer_tests/trackedChanges.py", line 626, in test_reject_all_deletes_all_redlines self.assertEqual(document.Redlines.Count, 0) AssertionError: 1 != 0 Change-Id: I844a23a2fb6e30fc34c964edd37d1e47a3ae3f50 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197669 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/sw/qa/uitest/data/reject-all-overlap.docx b/sw/qa/uitest/data/reject-all-overlap.docx deleted file mode 100644 index 6263df4e0f6f..000000000000 Binary files a/sw/qa/uitest/data/reject-all-overlap.docx and /dev/null differ diff --git a/sw/qa/uitest/writer_tests/trackedChanges.py b/sw/qa/uitest/writer_tests/trackedChanges.py index b8c2634ff571..1e21a3a703ff 100644 --- a/sw/qa/uitest/writer_tests/trackedChanges.py +++ b/sw/qa/uitest/writer_tests/trackedChanges.py @@ -608,23 +608,6 @@ class trackedchanges(UITestCase): self.assertEqual(0, len(changesList.getChildren())) - def test_reject_all_deletes_all_redlines(self): - # Given a document with overlapping changes: - with self.ui_test.load_file(get_url_for_data_file("reject-all-overlap.docx")) as document: - xWriterDoc = self.xUITest.getTopFocusWindow() - xWriterEdit = xWriterDoc.getChild("writer_edit") - - # When rejecting all changes using the manage changes dialog: - with self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptTrackedChanges", close_button="close") as xTrackDlg: - xAccBtn = xTrackDlg.getChild("rejectall") - xAccBtn.executeAction("CLICK", tuple()) - - # Then make sure all changes are rejected: - # Without the accompanying fix in place, this failed with: - # AssertionError: 1 != 0 - # i.e. a change was not rejected. - self.assertEqual(document.Redlines.Count, 0) - def test_tdf155847_multiple_tracked_columns_crash(self): with self.ui_test.load_file(get_url_for_data_file("TC-table-del-add.docx")) as document: diff --git a/sw/source/uibase/misc/redlndlg.cxx b/sw/source/uibase/misc/redlndlg.cxx index c05cb37b5c9c..49fa45217c43 100644 --- a/sw/source/uibase/misc/redlndlg.cxx +++ b/sw/source/uibase/misc/redlndlg.cxx @@ -1100,7 +1100,7 @@ void SwRedlineAcceptDlg::CallAcceptReject( bool bSelect, bool bAccept ) weld::TreeView& rTreeView = m_pTable->GetWidget(); - auto lambda = [bSelect, &rTreeView, &nPos, &aRedlines](weld::TreeIter& rEntry) { + auto lambda = [this, pSh, bSelect, bAccept, &rTreeView, &nPos, &aRedlines](weld::TreeIter& rEntry) { if (!rTreeView.get_iter_depth(rEntry)) { if (bSelect && nPos == -1) @@ -1108,7 +1108,25 @@ void SwRedlineAcceptDlg::CallAcceptReject( bool bSelect, bool bAccept ) RedlinData *pData = weld::fromId<RedlinData*>(rTreeView.get_id(rEntry)); - if (!pData->bDisabled) + bool bIsNotFormatted = true; + + // first remove only changes with insertion/deletion, if they exist + // (format-only changes haven't had real rejection yet, only an + // approximation: clear direct formatting, so try to warn + // with the extended button label "Reject All/Clear formatting") + if ( !bSelect && !bAccept && !m_bOnlyFormatedRedlines ) + { + SwRedlineTable::size_type nPosition = GetRedlinePos(rEntry); + if (nPosition != SwRedlineTable::npos) + { + const SwRangeRedline& rRedln = pSh->GetRedline(nPosition); + + if (RedlineType::Format == rRedln.GetType()) + bIsNotFormatted = false; + } + } + + if (!pData->bDisabled && bIsNotFormatted) aRedlines.emplace_back(rTreeView.make_iterator(&rEntry)); } return false;
