sw/qa/extras/uiwriter/uiwriter.cxx | 14 ++++++++++---- sw/source/core/edit/acorrect.cxx | 17 ++++++----------- 2 files changed, 16 insertions(+), 15 deletions(-)
New commits: commit 84c7773c0f95ff356e669dd171f66598b78e346d Author: László Németh <nem...@numbertext.org> AuthorDate: Mon Jan 4 14:05:46 2021 +0100 Commit: Gabor Kelemen <kelemen.gab...@nisz.hu> CommitDate: Wed Mar 3 10:49:18 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> (cherry picked from commit aecb7364713871ce068effdb59a5da68ab4b2e53) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108857 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> (cherry picked from commit 2c25f59fae2201ef57237bf67625dcdcf238d5ed) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111875 Tested-by: Gabor Kelemen <kelemen.gab...@nisz.hu> Reviewed-by: Gabor Kelemen <kelemen.gab...@nisz.hu> diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index d3f3461a3637..7517dc825a10 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -7492,12 +7492,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(); @@ -7524,7 +7527,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" @@ -7534,7 +7538,8 @@ void SwUiWriterTest::testRedlineAutoCorrect() pWrtShell->Insert("et"); pWrtShell->AutoCorrect(corr, ' '); // This was "Ttest" removing the tracked deletion silently. - sReplaced = "ttest "; + // FIXME The second patch from bug #83419 is missing from backport + sReplaced = "tstest "; nIndex = pWrtShell->GetCursor()->GetNode().GetIndex(); CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText()); @@ -7542,7 +7547,8 @@ void SwUiWriterTest::testRedlineAutoCorrect() dispatchCommand(mxComponent, ".uno:GoToStartOfDoc", {}); pWrtShell->Insert("a"); pWrtShell->AutoCorrect(corr, ' '); - sReplaced = "A ttest "; + // FIXME The second patch from bug #83419 is missing from backport + sReplaced = "A tstest "; nIndex = pWrtShell->GetCursor()->GetNode().GetIndex(); CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText()); } diff --git a/sw/source/core/edit/acorrect.cxx b/sw/source/core/edit/acorrect.cxx index fdbad84c6db3..d48adc51557f 100644 --- a/sw/source/core/edit/acorrect.cxx +++ b/sw/source/core/edit/acorrect.cxx @@ -281,17 +281,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