From 1f44a635681af51a213f69d0fc60ec91a4458f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Mon, 19 Jun 2017 15:02:17 +0100 Subject: [PATCH 2/2] consider field marks as text for auto quotes Change-Id: I511a13f7785a0de6efaa8439d3f0bff20a1644ed --- editeng/qa/unit/core-test.cxx | 17 +++++++++++++++++ editeng/source/misc/svxacorr.cxx | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/editeng/qa/unit/core-test.cxx b/editeng/qa/unit/core-test.cxx index f620a72..b71c90c 100644 --- a/editeng/qa/unit/core-test.cxx +++ b/editeng/qa/unit/core-test.cxx @@ -375,6 +375,7 @@ void Test::testAutocorrect() CPPUNIT_ASSERT_EQUAL_MESSAGE("autocorrect", sExpected, aFoo.getResult()); } + // don't autocapitalize after a field mark { OUString sInput("Test. \x01 test"); sal_Unicode cNextChar(' '); @@ -385,6 +386,23 @@ void Test::testAutocorrect() CPPUNIT_ASSERT_EQUAL_MESSAGE("autocorrect", sExpected, aFoo.getResult()); } + + // consider field contents as text for auto quotes + { + OUString sInput("T\x01"); + sal_Unicode cNextChar('"'); + const sal_Unicode EXPECTED[] = { 'T', 0x01, 0x0201d }; + OUString sExpected(EXPECTED, SAL_N_ELEMENTS(EXPECTED)); + bool bNbspRunNext = false; + + TestAutoCorrDoc aFoo(sInput, LANGUAGE_ENGLISH_US); + aAutoCorrect.SetAutoCorrFlag(ChgQuotes, true); + aAutoCorrect.DoAutoCorrect(aFoo, sInput, sInput.getLength(), cNextChar, true, bNbspRunNext); + fprintf(stderr, "text is %x\n", aFoo.getResult()[aFoo.getResult().getLength() - 1]); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("autocorrect", sExpected, aFoo.getResult()); + } + } void Test::testHyperlinkCopyPaste() diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index c7ec14c..d8804dc 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -1258,7 +1258,7 @@ void SvxAutoCorrect::DoAutoCorrect( SvxAutoCorrDoc& rDoc, const OUString& rTxt, { sal_Unicode cPrev; bool bSttQuote = !nInsPos || - IsWordDelim( ( cPrev = rTxt[ nInsPos-1 ])) || + NonFieldWordDelim( ( cPrev = rTxt[ nInsPos-1 ])) || lcl_IsInAsciiArr( "([{", cPrev ) || ( cEmDash && cEmDash == cPrev ) || ( cEnDash && cEnDash == cPrev ); -- 2.9.3