[Libreoffice-commits] core.git: Branch 'libreoffice-5-3' - sw/qa sw/source

Justin Luth justin_luth at sil.org
Sat Dec 3 04:05:47 UTC 2016


 sw/qa/extras/ww8export/ww8export.cxx |   30 -------------------
 sw/source/filter/ww8/ww8par2.cxx     |   54 -----------------------------------
 2 files changed, 84 deletions(-)

New commits:
commit 7837860ff99577467fecb287cb0e3b111729b70a
Author: Justin Luth <justin_luth at sil.org>
Date:   Fri Dec 2 16:39:22 2016 +0300

    tdf#104333 revert ww8import: set table keep/split if emulated
    
    tables that span multiple pages, and rows greater than one page
    caused problems, so just removing the enhancement that tried
    to emulate what the original odt looked like.
    
    reverts commit 129f93e46c29b388d38e9097869fd3e72dc40a5e
    from bug tdf#91083
    
    Change-Id: Iac31116d731e1e4aa60ee6b8de973f7f9291e47a
    Reviewed-on: https://gerrit.libreoffice.org/31551
    Reviewed-by: Justin Luth <justin_luth at sil.org>
    Tested-by: Justin Luth <justin_luth at sil.org>
    (cherry picked from commit 1f8a70262ad99668210d9d6a128efd8382f63dd5)
    Reviewed-on: https://gerrit.libreoffice.org/31568
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sw/qa/extras/ww8export/ww8export.cxx b/sw/qa/extras/ww8export/ww8export.cxx
index a897984..f5fffee 100644
--- a/sw/qa/extras/ww8export/ww8export.cxx
+++ b/sw/qa/extras/ww8export/ww8export.cxx
@@ -1251,39 +1251,9 @@ DECLARE_WW8EXPORT_TEST(testTableKeep, "tdf91083.odt")
     //emulate table "keep with next" -do not split table
     CPPUNIT_ASSERT_EQUAL( OUString("Row 1"), parseDump("/root/page[3]/body/tab[1]/row[2]/cell[1]/txt[1]") );
     CPPUNIT_ASSERT_EQUAL( OUString("Row 1"), parseDump("/root/page[6]/body/tab[1]/row[2]/cell[1]/txt[1]") );
-
-    // detect and re-enable keep-with-next and dont-split-table settings
-    uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
-    uno::Reference<text::XTextTable> xTable (xTables->getByIndex(0), uno::UNO_QUERY);
-    CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTable, "Split"));
 }
 #endif
 
-DECLARE_WW8EXPORT_TEST(testTdf91083_tableKeep, "tdf91083_tableKeep.doc")
-{
-    // detect and re-enable keep-with-next and dont-split-table settings
-    uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
-
-    // single-row table - kept with next
-    uno::Reference<text::XTextTable> xTable (xTables->getByIndex(0), uno::UNO_QUERY);
-    CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTable, "Split"));
-    // I don't know how to test for SvxFormatKeepItem
-
-    // complex table - kept with next
-    xTables->getByIndex(1) >>= xTable;
-    CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTable, "Split"));
-
-    //single row table - do not split
-    xTables->getByIndex(3) >>= xTable;
-    CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTable, "Split"));
-
-    //multi-row table - do not split
-    xTables->getByIndex(4) >>= xTable;
-    CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTable, "Split"));
-}
-
 DECLARE_WW8EXPORT_TEST(testTdf76349_textboxMargins, "tdf76349_textboxMargins.doc")
 {
     // textboxes without borders were losing their spacing items in round-tripping
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index c777532..7bf86eb 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -2735,60 +2735,6 @@ void WW8TabDesc::FinishSwTable()
         m_pIo->m_pFormatOfJustInsertedApo = nullptr;
         m_MergeGroups.clear();
     }
-
-    // since Word formats don't have table "keep with next paragraph" and "don't split table" settings,
-    // they were emulated in MSWordExportBase::OutputTextNode. Now we need to re-create those settings, reversing that logic.
-    // bKeep: if first paragraph of EVERY row is marked keep-with-next (implies bDontSplit).
-    bool bKeep = true;
-    // bDontSplit table: if first paragraph of every row EXCEPT the last one is kept.
-    bool bDontSplit = false;
-    sal_uInt32 nRow=0;
-    std::vector< SwTextNode* > vEmulatedNodes;
-    while( bKeep && nRow < m_pTabLines->size() )
-    {
-        const SwTableLine* pIterTableRow = (*m_pTabLines)[ nRow ];
-        const SwTableBoxes& rIterTableBoxes = pIterTableRow->GetTabBoxes();
-        const SwTableBox* pIterFirstCell = rIterTableBoxes.empty() ? nullptr : rIterTableBoxes.front();
-        // only for non-complex tables
-        if( pIterFirstCell && !pIterTableRow->GetUpper() )
-        {
-            // check the first paragraph from each row
-            SwPaM aPam( *pIterFirstCell->GetSttNd(), 0 );
-            aPam.GetPoint()->nNode++;
-            SwNode & rNode = aPam.GetPoint()->nNode.GetNode();
-            SwTextNode* pFirstParagraphNode = nullptr;
-            if( rNode.IsTextNode() )
-                pFirstParagraphNode = rNode.GetTextNode();
-
-            if( pFirstParagraphNode )
-            {
-                if( !pFirstParagraphNode->GetSwAttrSet().GetKeep().GetValue() )
-                    bKeep = false;
-                // all rows except the last one have been kept
-                else if ( nRow == m_pTabLines->size() - 2 )
-                    bDontSplit = true;
-
-                // save the node, so the paragraph's keep-with-next-paragraph setting can be removed later if it was added for the emulation
-                vEmulatedNodes.push_back( pFirstParagraphNode );
-            }
-        }
-        ++nRow;
-    }
-
-    if( bDontSplit || (bKeep && !vEmulatedNodes.empty()) )
-    {
-        // clear the emulated row's paragraph property
-        while( !vEmulatedNodes.empty() )
-        {
-            vEmulatedNodes.back()->ResetAttr( RES_KEEP );
-            vEmulatedNodes.pop_back();
-        }
-
-        // Set the table properties
-        m_pTable->GetFrameFormat()->SetFormatAttr(SwFormatLayoutSplit( false ));
-        if( bKeep )
-            m_pTable->GetFrameFormat()->SetFormatAttr(SvxFormatKeepItem( true, RES_KEEP ));
-    }
 }
 
 // browse m_MergeGroups, detect the index of the first fitting group or -1 otherwise


More information about the Libreoffice-commits mailing list