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

Justin Luth justin_luth at sil.org
Wed Mar 28 13:08:21 UTC 2018


 sw/qa/extras/inc/swmodeltestbase.hxx                     |   18 +++++++++----
 sw/qa/extras/ww8export/data/tdf116570_exportFootnote.odt |binary
 sw/qa/extras/ww8export/ww8export2.cxx                    |   20 ++++++++-------
 sw/source/filter/ww8/wrtww8.cxx                          |    2 -
 4 files changed, 25 insertions(+), 15 deletions(-)

New commits:
commit 7e92a996d1588bdf2ff1e2df10220a0f57686cfb
Author: Justin Luth <justin_luth at sil.org>
Date:   Fri Mar 23 12:40:14 2018 +0300

    tdf#116570 ww8 export: skip sectionbreak for footnotes
    
    An extra CR was added at the start of each footnote. I'm guessing
    these documents started life as "end of document" footnotes in Word.
    
    SectionBreaksAndFrames is only used by .doc, so
    this will not affect .docx and .rtf (which are both fine anyway).
    
    I forgot that I recently fixed the same problem for endnotes
    in tdf#108448. Nice to have found example footnote documents also.
    
    Change-Id: Ib496e02d9ff46dbc2337a6d3dfe164a625b09a83
    Reviewed-on: https://gerrit.libreoffice.org/51771
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx
index b4b39aad7f27..de9db84162f5 100644
--- a/sw/qa/extras/inc/swmodeltestbase.hxx
+++ b/sw/qa/extras/inc/swmodeltestbase.hxx
@@ -498,13 +498,14 @@ protected:
         return aValue;
     }
 
-    /// Get number of paragraphs of the document.
-    int getParagraphs()
+    int getParagraphs( uno::Reference<text::XText> const & xText )
     {
-        uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
-        uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
-        uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
         int nRet = 0;
+        if ( ! xText.is() )
+            return nRet;
+
+        uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xText->getText(), uno::UNO_QUERY);
+        uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
         while (xParaEnum->hasMoreElements())
         {
             xParaEnum->nextElement();
@@ -513,6 +514,13 @@ protected:
         return nRet;
     }
 
+    /// Get number of paragraphs of the document.
+    int getParagraphs()
+    {
+        uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+        return getParagraphs( xTextDocument->getText() );
+    }
+
     uno::Reference<text::XTextContent> getParagraphOrTable(int number, uno::Reference<text::XText> const & xText = uno::Reference<text::XText>()) const
     {
         assert(number != 0); // this thing is 1-based
diff --git a/sw/qa/extras/ww8export/data/tdf116570_exportFootnote.odt b/sw/qa/extras/ww8export/data/tdf116570_exportFootnote.odt
new file mode 100644
index 000000000000..c1598eb71c9f
Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf116570_exportFootnote.odt differ
diff --git a/sw/qa/extras/ww8export/ww8export2.cxx b/sw/qa/extras/ww8export/ww8export2.cxx
index ab640d848931..bca0d6b745fb 100644
--- a/sw/qa/extras/ww8export/ww8export2.cxx
+++ b/sw/qa/extras/ww8export/ww8export2.cxx
@@ -206,15 +206,17 @@ DECLARE_WW8EXPORT_TEST(testTdf108448_endNote, "tdf108448_endNote.odt")
     uno::Reference<text::XText> xEndnote;
     xEndnotes->getByIndex(0) >>= xEndnote;
 
-    uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xEndnote->getText(), uno::UNO_QUERY);
-    uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
-    int nRet = 0;
-    while (xParaEnum->hasMoreElements())
-    {
-        xParaEnum->nextElement();
-        nRet++;
-    }
-    CPPUNIT_ASSERT_EQUAL_MESSAGE( "Number of paragraphs in Endnote i", 1, nRet );
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( "Number of paragraphs in Endnote i", 1, getParagraphs(xEndnote) );
+}
+
+DECLARE_WW8EXPORT_TEST(testTdf116570_exportFootnote, "tdf116570_exportFootnote.odt")
+{
+    uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY);
+    uno::Reference<text::XText> xFootnoteText;
+    xFootnotes->getByIndex(0) >>= xFootnoteText;
+
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( "Number of paragraphs in first footnote", 2, getParagraphs(xFootnoteText) );
 }
 
 DECLARE_WW8EXPORT_TEST(testTdf112074_RTLtableJustification, "tdf112074_RTLtableJustification.doc")
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index e4553b6217f3..ce893b951085 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -2706,7 +2706,7 @@ void MSWordExportBase::WriteText()
         SwNode& rNd = m_pCurPam->GetNode();
 
         // no section breaks exported for Endnotes
-        if ( rNd.IsTextNode() && m_nTextTyp != TXT_EDN )
+        if ( rNd.IsTextNode() && m_nTextTyp != TXT_EDN && m_nTextTyp != TXT_FTN )
         {
             SwSoftPageBreakList breakList;
             // if paragraph need to be split than handle section break somewhere


More information about the Libreoffice-commits mailing list