summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <Michael.Stahl@cib.de>2019-10-22 16:51:45 +0200
committerMichael Stahl <michael.stahl@cib.de>2019-10-23 13:10:02 +0200
commit2e636ee01e32208387ca77c4edadf6929063158a (patch)
treefbdfe18e376939ec54e19c92fc1c330eb6fb3609
parentddd08c8996d444d7c0fe49d083c4f70f0a278d14 (diff)
sw: let's insert some paragraph break character in SwPaM::GetText()
There are just 3 callers of this; 2 redline-related ones should both use DenoteSpecialCharacters() anyway and SwEditWin::FlushInBuffer() would probably be surprised to find any of the other CH_TXTATR in the string, so assume there's something limiting the cursor selection in that case. Change-Id: I83dcdc2b6734b6db22404d1c9b3adc9362451e9b Reviewed-on: https://gerrit.libreoffice.org/81343 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@cib.de>
-rw-r--r--sw/qa/core/macros-test.cxx6
-rw-r--r--sw/qa/core/uwriter.cxx2
-rw-r--r--sw/qa/extras/uiwriter/uiwriter.cxx4
-rw-r--r--sw/source/core/crsr/pam.cxx4
-rw-r--r--sw/source/core/doc/docredln.cxx10
5 files changed, 18 insertions, 8 deletions
diff --git a/sw/qa/core/macros-test.cxx b/sw/qa/core/macros-test.cxx
index 739b24afbf5c..58ea47a0449d 100644
--- a/sw/qa/core/macros-test.cxx
+++ b/sw/qa/core/macros-test.cxx
@@ -503,7 +503,8 @@ void SwMacrosTest::testFindReplace()
opts, false, SwDocPositions::Curr, SwDocPositions::End, bCancel, FindRanges::InBody);
CPPUNIT_ASSERT(bFound);
CPPUNIT_ASSERT(pPaM->HasMark());
- CPPUNIT_ASSERT_EQUAL(OUString(), pPaM->GetText());
+ CPPUNIT_ASSERT(pPaM->GetPoint()->nNode != pPaM->GetMark()->nNode);
+ CPPUNIT_ASSERT_EQUAL(OUString(OUStringLiteral1(CH_TXTATR_NEWLINE)), pPaM->GetText());
// now do another Find, inside the selection from the first Find
// opts.searchFlags = 71680;
@@ -511,7 +512,8 @@ void SwMacrosTest::testFindReplace()
opts, false, SwDocPositions::Curr, SwDocPositions::End, bCancel, FindRanges::InSel);
CPPUNIT_ASSERT(bFound);
CPPUNIT_ASSERT(pPaM->HasMark());
- CPPUNIT_ASSERT_EQUAL(OUString(), pPaM->GetText());
+ CPPUNIT_ASSERT(pPaM->GetPoint()->nNode != pPaM->GetMark()->nNode);
+ CPPUNIT_ASSERT_EQUAL(OUString(OUStringLiteral1(CH_TXTATR_NEWLINE)), pPaM->GetText());
rIDCO.ReplaceRange(*pPaM, " ", true);
diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx
index 62756392113f..575baa3c32ee 100644
--- a/sw/qa/core/uwriter.cxx
+++ b/sw/qa/core/uwriter.cxx
@@ -1547,6 +1547,8 @@ void SwDocTest::testTransliterate()
m_pDoc->getIDocumentContentOperations().AppendTextNode(*aPaM.GetPoint());
m_pDoc->getIDocumentContentOperations().InsertString(aPaM, "one (two) three");
+ aPaM.SetMark();
+ aPaM.GetMark()->nContent = 0;
CPPUNIT_ASSERT_EQUAL(OUString("One (Two) Three"),
translitTest(*m_pDoc, aPaM,
TransliterationFlags::TITLE_CASE));
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index ff50b080f79a..7bdd081dce2f 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -2456,7 +2456,7 @@ void SwUiWriterTest::testTdf72788()
pCursor->Move(fnMoveBackward);
}
//Check the text selection
- CPPUNIT_ASSERT_EQUAL(OUString("is textmore"), pCursor->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString(u"is text" + OUStringLiteral1(CH_TXTATR_NEWLINE) + u"more"), pCursor->GetText());
//Apply a *Bold* attribute to selection
SvxWeightItem aWeightItem(WEIGHT_BOLD, RES_CHRATR_WEIGHT);
rIDCO.InsertPoolItem(*pCursor, aWeightItem);
@@ -3523,7 +3523,9 @@ void SwUiWriterTest::testTdf83798()
SwPaM* pCursor = pDoc->GetEditShell()->GetCursor();
pCursor->SetMark();
pCursor->Move(fnMoveForward, GoInNode);
+ pCursor->Move(fnMoveBackward, GoInContent);
CPPUNIT_ASSERT_EQUAL(OUString("Table of Contents"), pCursor->GetText());
+ pCursor->Move(fnMoveForward, GoInContent);
pCursor->DeleteMark();
pCursor->SetMark();
pCursor->Move(fnMoveForward, GoInContent);
diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx
index ebef14e1ca3b..437864f6df56 100644
--- a/sw/source/core/crsr/pam.cxx
+++ b/sw/source/core/crsr/pam.cxx
@@ -1021,6 +1021,10 @@ OUString SwPaM::GetText() const
if (pTextNode != nullptr)
{
+ if (!bIsStartNode)
+ {
+ aResult.append(CH_TXTATR_NEWLINE); // use newline for para break
+ }
const OUString& aTmpStr = pTextNode->GetText();
if (bIsStartNode || bIsEndNode)
diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx
index c6a3e694e210..7c68046324a7 100644
--- a/sw/source/core/doc/docredln.cxx
+++ b/sw/source/core/doc/docredln.cxx
@@ -1788,19 +1788,19 @@ OUString SwRangeRedline::GetDescr()
bDeletePaM = true;
}
- OUString sDescr = pPaM->GetText();
+ OUString sDescr = DenoteSpecialCharacters(pPaM->GetText());
if (const SwTextNode *pTextNode = pPaM->GetNode().GetTextNode())
{
if (const SwTextAttr* pTextAttr = pTextNode->GetFieldTextAttrAt(pPaM->GetPoint()->nContent.GetIndex() - 1, true ))
{
- sDescr = pTextAttr->GetFormatField().GetField()->GetFieldName();
+ sDescr = SwResId(STR_START_QUOTE)
+ + pTextAttr->GetFormatField().GetField()->GetFieldName()
+ + SwResId(STR_END_QUOTE);
}
}
// replace $1 in description by description of the redlines text
- const OUString aTmpStr = SwResId(STR_START_QUOTE)
- + ShortenString(sDescr, nUndoStringLength, SwResId(STR_LDOTS))
- + SwResId(STR_END_QUOTE);
+ const OUString aTmpStr = ShortenString(sDescr, nUndoStringLength, SwResId(STR_LDOTS));
SwRewriter aRewriter;
aRewriter.AddRule(UndoArg1, aTmpStr);