From c06d77c5eb57c1a7f5692028b6b04132593f9156 Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Wed, 24 Aug 2016 15:17:43 +0300 Subject: tdf#101589 MS import: set 1-row table to don't split if row is set Since .doc and .docx don't have an option to "don't split table", we emulated that. For this IMPORT case when there is only one row, consider the entire table to be unsplitable is the row is unsplitable. This will give the expected results if the user starts adding more rows to the table. Change-Id: I8a2d817ff714ba0df65b5a5e263b27df4264e848 Reviewed-on: https://gerrit.libreoffice.org/28357 Tested-by: Jenkins Reviewed-by: Justin Luth Reviewed-by: Michael Stahl --- sw/qa/extras/ooxmlexport/ooxmlexport3.cxx | 8 ++++++++ sw/source/filter/ww8/ww8par2.cxx | 4 ++++ 2 files changed, 12 insertions(+) (limited to 'sw') diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx index 72c7e8e696de..4646876f5fb6 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx @@ -936,6 +936,14 @@ DECLARE_OOXMLEXPORT_TEST(testDontSplitTable, "tdf101589_dontSplitTable.odt") { //single row tables need to prevent split by setting row to no split CPPUNIT_ASSERT_EQUAL( OUString("Row 1"), parseDump("/root/page[2]/body/tab[1]/row[1]/cell[1]/txt[1]") ); + + uno::Reference xTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY); + uno::Reference xTable (xTables->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(false, getProperty(xTable, "Split")); + + uno::Reference xTableRows(xTable->getRows(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(false, getProperty(xTableRows->getByIndex(0), "IsSplitAllowed")); } DECLARE_OOXMLEXPORT_TEST(testExtraSectionBreak, "1_page.docx") diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index 87e4d8aa2e4b..cc60100bcb7e 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -3186,6 +3186,10 @@ void WW8TabDesc::AdjustNewBand() bool bSetCantSplit = pActBand->bCantSplit; pTabLine->GetFrameFormat()->SetFormatAttr(SwFormatRowSplit(!bSetCantSplit)); + // if table is only a single row, and row is set as don't split, set the same value for the whole table. + if( bSetCantSplit && pTabLines->size() == 1 ) + pTable->GetFrameFormat()->SetFormatAttr(SwFormatLayoutSplit( !bSetCantSplit )); + short i; // SW-Index short j; // WW-Index short nW; // Width -- cgit