diff options
-rw-r--r-- | sw/qa/extras/uiwriter/data/autotext-dotm.dotm | bin | 0 -> 19456 bytes | |||
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter.cxx | 18 | ||||
-rw-r--r-- | sw/source/filter/docx/swdocxreader.cxx | 6 |
3 files changed, 23 insertions, 1 deletions
diff --git a/sw/qa/extras/uiwriter/data/autotext-dotm.dotm b/sw/qa/extras/uiwriter/data/autotext-dotm.dotm Binary files differnew file mode 100644 index 000000000000..4909296d2117 --- /dev/null +++ b/sw/qa/extras/uiwriter/data/autotext-dotm.dotm diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index c64e8b124f2e..62958cfbac8e 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -122,6 +122,7 @@ public: void testExportRTF(); void testDOCXAutoTextEmpty(); void testDOCXAutoTextMultiple(); + void testDOTMAutoText(); void testTdf67238(); void testFdo75110(); void testFdo75898(); @@ -252,6 +253,7 @@ public: CPPUNIT_TEST(testExportRTF); CPPUNIT_TEST(testDOCXAutoTextEmpty); CPPUNIT_TEST(testDOCXAutoTextMultiple); + CPPUNIT_TEST(testDOTMAutoText); CPPUNIT_TEST(testTdf67238); CPPUNIT_TEST(testFdo75110); CPPUNIT_TEST(testFdo75898); @@ -806,6 +808,22 @@ void SwUiWriterTest::testDOCXAutoTextMultiple() CPPUNIT_ASSERT_EQUAL(OUString("complex"), rLastNode.GetTextNode()->GetText()); } +void SwUiWriterTest::testDOTMAutoText() +{ + // this is dotm file difference is that in the dotm + // there are no empty paragraphs at the end of each entry + SwTextBlocks* pGlossary = readDOCXAutotext("autotext-dotm.dotm"); + + SwDoc* pDoc = pGlossary->GetDoc(); + CPPUNIT_ASSERT(pDoc != nullptr); + + // check if content is correct + SwNodeIndex aDocEnd(pDoc->GetNodes().GetEndOfContent()); + SwNodeIndex aStart(*aDocEnd.GetNode().StartOfSectionNode(), 1); + SwNode& rNode = aStart.GetNode(); + CPPUNIT_ASSERT_EQUAL(OUString("paragraph"), rNode.GetTextNode()->GetText()); +} + void SwUiWriterTest::testFdo74981() { // create a document with an input field diff --git a/sw/source/filter/docx/swdocxreader.cxx b/sw/source/filter/docx/swdocxreader.cxx index 7558b4dfba10..b72253c0b57a 100644 --- a/sw/source/filter/docx/swdocxreader.cxx +++ b/sw/source/filter/docx/swdocxreader.cxx @@ -139,7 +139,11 @@ bool SwDOCXReader::MakeEntries( SwDoc *pD, SwTextBlocks &rBlocks ) aPam.SetMark(); { SwNodeIndex& rIdx = aPam.GetPoint()->nNode; - rIdx = aStart.GetNode().EndOfSectionIndex() - 2; + rIdx = aStart.GetNode().EndOfSectionIndex() - 1; + // don't add extra empty text node if exist (.dotx but not .dotm) + if( rIdx.GetNode().GetTextNode() && + rIdx.GetNode().GetTextNode()->GetText().isEmpty() ) + rIdx = aStart.GetNode().EndOfSectionIndex() - 2; if( ( nullptr == ( pCNd = rIdx.GetNode().GetContentNode() ) ) ) { ++rIdx; |