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

Justin Luth justin_luth at sil.org
Thu Jun 23 15:07:53 UTC 2016


 sw/qa/extras/ooxmlexport/ooxmlexport4.cxx |   12 +++++++++---
 sw/source/core/layout/flowfrm.cxx         |    5 ++++-
 2 files changed, 13 insertions(+), 4 deletions(-)

New commits:
commit 2721111437706372eaac9bf1d748723196c573ac
Author: Justin Luth <justin_luth at sil.org>
Date:   Sat Jun 11 10:30:18 2016 +0300

    tdf#76349 writer: treat single-column break as page break
    
    Writerfilter imports docx-defined column breaks that exist without
    being in a column.  Word treats these as if they were a page break.
    Writer basically just preserved and ignored them.
    
    I limited the fix to only consider SVX_BREAK_COLUMN_BEFORE since
    writerfilter is only given “column break” and treats it as column_before.
    
    Change-Id: I0d974441d53243c4426048dd7cb60b3897b803f6
    Reviewed-on: https://gerrit.libreoffice.org/26181
    Tested-by: Justin Luth <justin_luth at sil.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index bc2eab2..a6282d6 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@ -362,9 +362,15 @@ DECLARE_OOXMLEXPORT_TEST(testColumnBreak_ColumnCountIsZero,"fdo74153.docx")
      * The <w:br w:type="column" /> was missing after roundtrip
      */
     xmlDocPtr pXmlDoc = parseExport("word/document.xml");
-    if (!pXmlDoc)
-        return;
-    assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:br","type","column");
+    if (pXmlDoc)
+        assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:br","type","column");
+
+    //tdf76349 match Word's behavior of treating breaks in single columns as page breaks.
+    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();
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
 }
 
 DECLARE_OOXMLEXPORT_TEST(testIndentation, "test_indentation.docx")
diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx
index 7946f5b..dad6f97 100644
--- a/sw/source/core/layout/flowfrm.cxx
+++ b/sw/source/core/layout/flowfrm.cxx
@@ -1127,8 +1127,11 @@ bool SwFlowFrame::IsPageBreak( bool bAct ) const
                     return false;
             }
 
+            //for compatibility, also break at column break if no columns exist
             const SvxBreak eBreak = pSet->GetBreak().GetBreak();
-            if ( eBreak == SVX_BREAK_PAGE_BEFORE || eBreak == SVX_BREAK_PAGE_BOTH )
+            if ( eBreak == SVX_BREAK_PAGE_BEFORE ||
+                 eBreak == SVX_BREAK_PAGE_BOTH ||
+                 (eBreak == SVX_BREAK_COLUMN_BEFORE && !m_rThis.FindColFrame()) )
                 return true;
             else
             {


More information about the Libreoffice-commits mailing list