diff options
-rw-r--r-- | sw/qa/extras/tiledrendering/tiledrendering.cxx | 27 | ||||
-rw-r--r-- | sw/source/core/doc/docredln.cxx | 12 |
2 files changed, 38 insertions, 1 deletions
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx index 226874291be6..089537b6dc0c 100644 --- a/sw/qa/extras/tiledrendering/tiledrendering.cxx +++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx @@ -38,6 +38,7 @@ #include <sfx2/dispatch.hxx> #include <redline.hxx> #include <IDocumentRedlineAccess.hxx> +#include <flddat.hxx> static const char* DATA_DIRECTORY = "/sw/qa/extras/tiledrendering/data/"; @@ -93,6 +94,7 @@ public: void testDocumentRepair(); void testPageHeader(); void testPageFooter(); + void testRedlineField(); CPPUNIT_TEST_SUITE(SwTiledRenderingTest); CPPUNIT_TEST(testRegisterCallback); @@ -142,6 +144,7 @@ public: CPPUNIT_TEST(testDocumentRepair); CPPUNIT_TEST(testPageHeader); CPPUNIT_TEST(testPageFooter); + CPPUNIT_TEST(testRedlineField); CPPUNIT_TEST_SUITE_END(); private: @@ -2009,6 +2012,30 @@ void SwTiledRenderingTest::testPageFooter() } +void SwTiledRenderingTest::testRedlineField() +{ + // Load a document. + comphelper::LibreOfficeKit::setActive(); + SwXTextDocument* pXTextDocument = createDoc("dummy.fodt"); + SwWrtShell* pWrtShell = pXTextDocument->GetDocShell()->GetWrtShell(); + + // Turn on track changes and type "x". + uno::Reference<beans::XPropertySet> xPropertySet(mxComponent, uno::UNO_QUERY); + xPropertySet->setPropertyValue("RecordChanges", uno::makeAny(true)); + + SwDateTimeField aDate(static_cast<SwDateTimeFieldType*>(pWrtShell->GetFieldType(0, RES_DATETIMEFLD))); + //aDate->SetDateTime(::DateTime(::DateTime::SYSTEM)); + pWrtShell->Insert(aDate); + + // Get the redline just created + const SwRedlineTable& rTable = pWrtShell->GetDoc()->getIDocumentRedlineAccess().GetRedlineTable(); + CPPUNIT_ASSERT_EQUAL(static_cast<SwRedlineTable::size_type>(1), rTable.size()); + SwRangeRedline* pRedline = rTable[0]; + CPPUNIT_ASSERT(pRedline->GetDescr().indexOf(aDate.GetFieldName())!= -1); + + comphelper::LibreOfficeKit::setActive(false); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwTiledRenderingTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx index 0803609ae963..2d24fe55fdbd 100644 --- a/sw/source/core/doc/docredln.cxx +++ b/sw/source/core/doc/docredln.cxx @@ -57,6 +57,7 @@ #include <comcore.hrc> #include <unoport.hxx> #include <wrtsh.hxx> +#include <txtfld.hxx> #include "flowfrm.hxx" @@ -1777,9 +1778,18 @@ OUString SwRangeRedline::GetDescr() bDeletePaM = true; } + OUString sDescr = 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(); + } + } + // replace $1 in description by description of the redlines text const OUString aTmpStr = SW_RESSTR(STR_START_QUOTE) - + ShortenString(pPaM->GetText(), nUndoStringLength, SW_RESSTR(STR_LDOTS)) + + ShortenString(sDescr, nUndoStringLength, SW_RESSTR(STR_LDOTS)) + SW_RESSTR(STR_END_QUOTE); SwRewriter aRewriter; |