sw/qa/extras/uiwriter/uiwriter.cxx | 8 ++++++-- sw/source/core/edit/acorrect.cxx | 17 ++++++----------- 2 files changed, 12 insertions(+), 13 deletions(-)
New commits: commit aecb7364713871ce068effdb59a5da68ab4b2e53 Author: László Németh <nem...@numbertext.org> AuthorDate: Mon Jan 4 14:05:46 2021 +0100 Commit: László Németh <nem...@numbertext.org> CommitDate: Tue Jan 5 19:32:14 2021 +0100 tdf#106380 sw AutoCorrect: track deletion at capitalization Deletion of the original lowercase character wasn't tracked during sentence capitalization, resulting broken change tracking data. Note: for similar potential problems, see FIXME at the end of DocumentContentOperationsManager::Overwrite(). Change-Id: If6ddbb77675d87eb126f7d3bf554b529892b88d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108670 Tested-by: Jenkins Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index 9f5967b5d2ff..9816e18574a5 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -7634,12 +7634,15 @@ void SwUiWriterTest::testRedlineAutoCorrect() SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); - // show tracked deletion + // show tracked deletion with enabled change tracking RedlineFlags const nMode(pWrtShell->GetRedlineFlags() | RedlineFlags::On); CPPUNIT_ASSERT(nMode & (RedlineFlags::ShowDelete | RedlineFlags::ShowInsert)); pWrtShell->SetRedlineFlags(nMode); CPPUNIT_ASSERT(nMode & RedlineFlags::ShowDelete); + CPPUNIT_ASSERT_MESSAGE("redlining should be on", + pDoc->getIDocumentRedlineAccess().IsRedlineOn()); + SwAutoCorrect corr(*SvxAutoCorrCfg::Get().GetAutoCorrect()); pWrtShell->AutoCorrect(corr, ' '); sal_uLong nIndex = pWrtShell->GetCursor()->GetNode().GetIndex(); @@ -7666,7 +7669,8 @@ void SwUiWriterTest::testRedlineAutoCorrect() nIndex = pWrtShell->GetCursor()->GetNode().GetIndex(); // This still keep the tracked deletion, capitalize only the visible text "s" - sReplaced = "tS "; + // with tracked deletion of the original character + sReplaced = "tsS "; CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText()); // repeat it with visible redlining and word auto replacement of "tset" diff --git a/sw/source/core/edit/acorrect.cxx b/sw/source/core/edit/acorrect.cxx index a45f1a7de11c..1a5ffe5ca762 100644 --- a/sw/source/core/edit/acorrect.cxx +++ b/sw/source/core/edit/acorrect.cxx @@ -259,17 +259,12 @@ bool SwAutoCorrDoc::ReplaceRange( sal_Int32 nPos, sal_Int32 nSourceLength, const } else { - if( nSourceLength != rText.getLength() ) - { - pPam->SetMark(); - pPam->GetPoint()->nContent = std::min<sal_Int32>( - pos.first->GetText().getLength(), pos.second + nSourceLength); - pDoc->getIDocumentContentOperations().ReplaceRange( *pPam, rText, false ); - pPam->Exchange(); - pPam->DeleteMark(); - } - else - pDoc->getIDocumentContentOperations().Overwrite( *pPam, rText ); + pPam->SetMark(); + pPam->GetPoint()->nContent = std::min<sal_Int32>( + pos.first->GetText().getLength(), pos.second + nSourceLength); + pDoc->getIDocumentContentOperations().ReplaceRange( *pPam, rText, false ); + pPam->Exchange(); + pPam->DeleteMark(); } if( m_bUndoIdInitialized ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits