From 8885bf8f8665286ae1df30d987790e5680f2bb36 Mon Sep 17 00:00:00 2001 From: László Németh Date: Thu, 25 Feb 2021 10:55:57 +0100 Subject: tdf#134940 sw: fix AutoCorrect of arrow "-->" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix bad replacement of "-->" with "–>" instead of "→" (i.e. premature replacement of "--" to n-dash) since '>' was added to IsAutoCorrectChar(). Regression from commit 57f07b1d7378d218648667c5b1315cc8ad905875 "tdf#133524 AutoCorrect: support double angle quotes". Change-Id: I06f0cddb48d13c8e230dab964f79f588799ed4ab Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111527 Tested-by: László Németh Reviewed-by: László Németh (cherry picked from commit d1be3d80d0ca5ccd7639ede379a1befc48dc73f2) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111579 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- editeng/source/misc/svxacorr.cxx | 5 ++++- sw/qa/extras/uiwriter/uiwriter.cxx | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index a888f4474a34..e6b951e7b187 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -1515,7 +1515,10 @@ void SvxAutoCorrect::DoAutoCorrect( SvxAutoCorrDoc& rDoc, const OUString& rTxt, if( lcl_IsSymbolChar( rCC, rTxt, nCapLttrPos, nInsPos )) break; - if( IsAutoCorrFlag( ACFlags::Autocorrect ) ) + if( IsAutoCorrFlag( ACFlags::Autocorrect ) && + // tdf#134940 fix regression of arrow "-->" resulted by premature + // replacement of "--" since '>' was added to IsAutoCorrectChar() + '>' != cChar ) { // WARNING ATTENTION: rTxt is an alias of the text node's OUString // and becomes INVALID if ChgAutoCorrWord returns true! diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index 5ea7da588a02..e205f94656ce 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -7834,6 +7834,16 @@ void SwUiWriterTest::testTdf133524() pWrtShell->AutoCorrect(corr, '"'); sReplaced += u".”"; CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast(pDoc->GetNodes()[nIndex])->GetText()); + // tdf#134940 avoid premature replacement of "--" in "-->" + pWrtShell->Insert(u" --"); + pWrtShell->AutoCorrect(corr, '>'); + OUString sReplaced2(sReplaced + u" -->"); + // This was "–>" instead of "-->" + CPPUNIT_ASSERT_EQUAL(sReplaced2, static_cast(pDoc->GetNodes()[nIndex])->GetText()); + pWrtShell->AutoCorrect(corr, ' '); + sReplaced += u" → "; + // This was "–>" instead of "→" + CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast(pDoc->GetNodes()[nIndex])->GetText()); } void SwUiWriterTest::testTdf133524_Romanian() -- cgit