[Libreoffice-commits] core.git: editeng/source sw/qa

László Németh (via logerrit) logerrit at kemper.freedesktop.org
Sat Dec 21 15:23:31 UTC 2019


 editeng/source/misc/svxacorr.cxx   |    3 ++-
 sw/qa/extras/uiwriter/uiwriter.cxx |   16 ++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

New commits:
commit f6cf80c81043d84606a5b5f7d93ae958307a16d3
Author:     László Németh <nemeth at numbertext.org>
AuthorDate: Fri Dec 20 19:35:38 2019 +0100
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Sat Dec 21 16:22:09 2019 +0100

    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 at numbertext.org>

diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 58088523fb4e..faea050bbe17 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -304,6 +304,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 )
@@ -845,7 +846,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 4790a602bbbf..dbd90d905a3b 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -360,6 +360,7 @@ public:
     void testTdf91801();
     void testTdf51223();
     void testTdf108423();
+    void testTdf106164();
     void testInconsistentBookmark();
 
     CPPUNIT_TEST_SUITE(SwUiWriterTest);
@@ -563,6 +564,7 @@ public:
     CPPUNIT_TEST(testTdf51223);
     CPPUNIT_TEST(testInconsistentBookmark);
     CPPUNIT_TEST(testTdf108423);
+    CPPUNIT_TEST(testTdf106164);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -7025,6 +7027,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();
 


More information about the Libreoffice-commits mailing list