tdf#106164 AutoCorrect: capitalize words with apostrophe
at sentence starting position, for example
we’re -> We’re
This worked only with ASCII apostrophe ('), and changing to default
usage of typographical apostrophe (U+2019) broke this kind of
capitalization from commit e6fade1ce133039d28369751b77ac8faff6e40cb
(tdf#38395 enable smart apostrophe replacement by default).
Change-Id: If582194364f77cfb9fc0f04a28ac79a08bb804ff
Reviewed-on: https://gerrit.libreoffice.org/85630
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
(cherry picked from commit f6cf80c81043d84606a5b5f7d93ae958307a16d3)
Reviewed-on: https://gerrit.libreoffice.org/85660
(cherry picked from commit 030b7c01dcb2262e5dc73de81dd33e2e24529da2)
Reviewed-on: https://gerrit.libreoffice.org/85664
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index bc9d1f8..53158cd 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -308,6 +308,7 @@ ACFlags SvxAutoCorrect::GetDefaultFlags()
static constexpr sal_Unicode cEmDash = 0x2014;
static constexpr sal_Unicode cEnDash = 0x2013;
static constexpr sal_Unicode cApostrophe = 0x2019;
SvxAutoCorrect::SvxAutoCorrect( const OUString& rShareAutocorrFile,
const OUString& rUserAutocorrFile )
@@ -849,7 +850,7 @@ void SvxAutoCorrect::FnCapitalStartSentence( SvxAutoCorrDoc& rDoc,
}
else if (pWordStt && !rCC.isDigit(aText, pStr - pStart))
{
if( lcl_IsInAsciiArr( "-'", *pStr ) && // These characters are allowed in words
if( (lcl_IsInAsciiArr( "-'", *pStr ) || *pStr == cApostrophe) && // These characters are allowed in words
pWordStt - 1 == pStr &&
// Installation at beginning of paragraph. Replaced < by <= (#i38971#)
(pStart + 1) <= pStr &&
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 0a646fd..6689983 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -359,6 +359,7 @@ public:
void testTdf91801();
void testTdf51223();
void testTdf108423();
void testTdf106164();
void testInconsistentBookmark();
CPPUNIT_TEST_SUITE(SwUiWriterTest);
@@ -568,6 +569,7 @@ public:
CPPUNIT_TEST(testTdf51223);
CPPUNIT_TEST(testInconsistentBookmark);
CPPUNIT_TEST(testTdf108423);
CPPUNIT_TEST(testTdf106164);
CPPUNIT_TEST_SUITE_END();
private:
@@ -6943,6 +6945,20 @@ void SwUiWriterTest::testTdf108423()
CPPUNIT_ASSERT_EQUAL(sText, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText());
}
void SwUiWriterTest::testTdf106164()
{
SwDoc* pDoc = createDoc();
SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
// testing autocorrect of we're -> We're on start of first paragraph
SwAutoCorrect corr(*SvxAutoCorrCfg::Get().GetAutoCorrect());
pWrtShell->Insert(u"we\u2019re");
const sal_Unicode cChar = ' ';
pWrtShell->AutoCorrect(corr, cChar);
sal_uLong nIndex = pWrtShell->GetCursor()->GetNode().GetIndex();
OUString sIApostrophe(u"We\u2019re ");
CPPUNIT_ASSERT_EQUAL(sIApostrophe, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText());
}
CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest);
CPPUNIT_PLUGIN_IMPLEMENT();