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

Justin Luth justin_luth at sil.org
Mon Oct 10 06:31:15 UTC 2016


 dev/null                                                       |binary
 sw/qa/extras/ooxmlexport/data/inheritFirstHeader.docx          |binary
 sw/qa/extras/ooxmlexport/data/tdf95367_inheritFollowStyle.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport4.cxx                      |   28 ++++++++++
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx                       |   28 ----------
 sw/source/filter/ww8/docxattributeoutput.cxx                   |    6 +-
 sw/source/filter/ww8/docxexport.cxx                            |    4 +
 sw/source/filter/ww8/wrtww8.cxx                                |    4 +
 8 files changed, 39 insertions(+), 31 deletions(-)

New commits:
commit 7060c7b642fdc0a369505e430652ee44205e7eed
Author: Justin Luth <justin_luth at sil.org>
Date:   Thu Oct 6 16:53:23 2016 +0300

    tdf#95367 DOCX: allow r-t of changed first/follow sections
    
    Change-Id: Ibb97411a7dfeebc3edbdd149842bfe626942cf7f
    Reviewed-on: https://gerrit.libreoffice.org/29559
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/qa/extras/ooxmlimport/data/inheritFirstHeader.docx b/sw/qa/extras/ooxmlexport/data/inheritFirstHeader.docx
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/inheritFirstHeader.docx
rename to sw/qa/extras/ooxmlexport/data/inheritFirstHeader.docx
diff --git a/sw/qa/extras/ooxmlimport/data/tdf95367_inheritFollowStyle.docx b/sw/qa/extras/ooxmlexport/data/tdf95367_inheritFollowStyle.docx
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/tdf95367_inheritFollowStyle.docx
rename to sw/qa/extras/ooxmlexport/data/tdf95367_inheritFollowStyle.docx
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index 559c4a7..1a6c967 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@ -1031,6 +1031,34 @@ DECLARE_OOXMLEXPORT_TEST(testTdf90697_continuousBreaksComplex2,"tdf92724_continu
     }
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf95367_inheritFollowStyle, "tdf95367_inheritFollowStyle.docx")
+{
+    CPPUNIT_ASSERT_EQUAL(OUString("header"),  parseDump("/root/page[2]/header/txt/text()"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testInheritFirstHeader,"inheritFirstHeader.docx")
+{
+// First page headers always link to last used first header, never to a follow header
+    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+    uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+    uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+
+    xCursor->jumpToLastPage();
+    OUString sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
+    uno::Reference<text::XText> xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
+    CPPUNIT_ASSERT_EQUAL( OUString("Last Header"), xHeaderText->getString() );
+
+    xCursor->jumpToPreviousPage();
+    sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
+    xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
+    CPPUNIT_ASSERT_EQUAL( OUString("First Header"), xHeaderText->getString() );
+
+    xCursor->jumpToPreviousPage();
+    sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
+    xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
+    CPPUNIT_ASSERT_EQUAL( OUString("Follow Header"), xHeaderText->getString() );
+}
+
 DECLARE_OOXMLEXPORT_TEST(testTdf81345_045Original,"tdf81345.docx")
 {
     //Header wasn't replaced  and columns were missing because no new style was created.
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index f42f1e6..912e01b 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -443,11 +443,6 @@ are on page 2 and page 3
     CPPUNIT_ASSERT_EQUAL( OUString("two"), parseDump("/root/page[3]/body/txt/text()") );
 }
 
-DECLARE_OOXMLIMPORT_TEST(testTdf95367_inheritFollowStyle, "tdf95367_inheritFollowStyle.docx")
-{
-    CPPUNIT_ASSERT_EQUAL(OUString("header"),  parseDump("/root/page[2]/header/txt/text()"));
-}
-
 DECLARE_OOXMLIMPORT_TEST(testN652364, "n652364.docx")
 {
 /*
@@ -993,29 +988,6 @@ DECLARE_OOXMLIMPORT_TEST(testN780843b, "n780843b.docx")
     CPPUNIT_ASSERT_EQUAL( OUString("hidden footer"), xFooterText->getString() );
 }
 
-DECLARE_OOXMLIMPORT_TEST(testInheritFirstHeader,"inheritFirstHeader.docx")
-{
-// First page headers always link to last used first header, never to a follow header
-    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
-    uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
-    uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
-
-    xCursor->jumpToLastPage();
-    OUString sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
-    uno::Reference<text::XText> xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
-    CPPUNIT_ASSERT_EQUAL( OUString("Last Header"), xHeaderText->getString() );
-
-    xCursor->jumpToPreviousPage();
-    sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
-    xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
-    CPPUNIT_ASSERT_EQUAL( OUString("First Header"), xHeaderText->getString() );
-
-    xCursor->jumpToPreviousPage();
-    sPageStyleName = getProperty<OUString>( xCursor, "PageStyleName" );
-    xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName(sPageStyleName), "HeaderText");
-    CPPUNIT_ASSERT_EQUAL( OUString("Follow Header"), xHeaderText->getString() );
-}
-
 DECLARE_OOXMLIMPORT_TEST(testShadow, "imgshadow.docx")
 {
     /*
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 62e8e8f..582e8cd 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -821,13 +821,13 @@ void DocxAttributeOutput::SectionBreaks(const SwNode& rNode)
     }
     else if (rNode.IsEndNode())
     {
-        // End of something: make sure that it's the end of a table.
-        assert(rNode.StartOfSectionNode()->IsTableNode());
         if (aNextIndex.GetNode().IsTextNode())
         {
             // Handle section break between a table and a text node following it.
+            // Also handle section endings
             const SwTextNode* pTextNode = aNextIndex.GetNode().GetTextNode();
-            m_rExport.OutputSectionBreaks(pTextNode->GetpSwAttrSet(), *pTextNode, m_tableReference->m_bTableCellOpen, pTextNode->GetText().isEmpty());
+            if (rNode.StartOfSectionNode()->IsTableNode() || rNode.StartOfSectionNode()->IsSectionNode())
+                m_rExport.OutputSectionBreaks(pTextNode->GetpSwAttrSet(), *pTextNode, m_tableReference->m_bTableCellOpen, pTextNode->GetText().isEmpty());
         }
     }
 }
diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx
index e19cf19..05459de 100644
--- a/sw/source/filter/ww8/docxexport.cxx
+++ b/sw/source/filter/ww8/docxexport.cxx
@@ -509,6 +509,10 @@ void DocxExport::OutputEndNode( const SwEndNode& rEndNode )
             AttrOutput().SectionBreak( msword::PageBreak, m_pSections->CurrentSectionInfo( ) );
             m_pSections->AppendSection( m_pAktPageDesc, pParentFormat, nRstLnNum );
         }
+        else
+        {
+            AttrOutput().SectionBreaks( rEndNode );
+        }
     }
     else if (TXT_MAINTEXT == m_nTextTyp && rEndNode.StartOfSectionNode()->IsTableNode())
         // End node of a table: see if a section break should be written after the table.
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 63324ec..224f961 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -2735,6 +2735,10 @@ void MSWordExportBase::WriteText()
 
                     AppendSection( m_pAktPageDesc, pParentFormat, nRstLnNum );
                 }
+                else
+                {
+                    OutputEndNode( *rNd.GetEndNode() );
+                }
             }
         }
         else if ( rNd.IsStartNode() )


More information about the Libreoffice-commits mailing list