sw/qa/extras/ww8export/data/tdf55528_relativeTableWidth.doc |binary sw/qa/extras/ww8export/ww8export2.cxx | 11 +++++++ sw/source/filter/ww8/ww8par2.cxx | 18 ++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-)
New commits: commit e69473539a33da5450d3878999eba7f9bfb9e631 Author: Justin Luth <[email protected]> Date: Thu Sep 28 18:22:08 2017 +0300 tdf#55528 ww8import: import table width percent Change-Id: Ifab8fa2df13e16cbfbd70b62912ca2a6245e16cc Reviewed-on: https://gerrit.libreoffice.org/42918 Tested-by: Jenkins <[email protected]> Reviewed-by: Justin Luth <[email protected]> diff --git a/sw/qa/extras/ww8export/data/tdf55528_relativeTableWidth.doc b/sw/qa/extras/ww8export/data/tdf55528_relativeTableWidth.doc new file mode 100755 index 000000000000..367f7873d75f Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf55528_relativeTableWidth.doc differ diff --git a/sw/qa/extras/ww8export/ww8export2.cxx b/sw/qa/extras/ww8export/ww8export2.cxx index cc6e3f14c5c6..191d4b940e10 100644 --- a/sw/qa/extras/ww8export/ww8export2.cxx +++ b/sw/qa/extras/ww8export/ww8export2.cxx @@ -52,6 +52,17 @@ DECLARE_WW8EXPORT_TEST(testTdf41542_borderlessPadding, "tdf41542_borderlessPaddi CPPUNIT_ASSERT_EQUAL( 3, getPages() ); } +DECLARE_WW8EXPORT_TEST(testTdf55528_relativeTableWidth, "tdf55528_relativeTableWidth.doc") +{ + + uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY); + uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY); + +if ( !mbExported ) + CPPUNIT_ASSERT_EQUAL_MESSAGE("Table relative width percent", sal_Int16(98), getProperty<sal_Int16>(xTable, "RelativeWidth")); + } + DECLARE_WW8EXPORT_TEST(testTdf37153, "tdf37153_considerWrapOnObjPos.doc") { CPPUNIT_ASSERT_EQUAL(text::WrapTextMode_THROUGH, getProperty<text::WrapTextMode>(getShape(1), "Surround")); diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index f30b6e9632c7..574db30c1200 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -169,6 +169,7 @@ class WW8TabDesc short m_nMaxRight; short m_nSwWidth; short m_nPreferredWidth; + short m_nPercentWidth; bool m_bOk; bool m_bClaimLineFormat; @@ -1847,6 +1848,7 @@ WW8TabDesc::WW8TabDesc(SwWW8ImplReader* pIoClass, WW8_CP nStartCp) : m_nMaxRight(0), m_nSwWidth(0), m_nPreferredWidth(0), + m_nPercentWidth(0), m_bOk(true), m_bClaimLineFormat(false), m_eOri(text::HoriOrientation::NONE), @@ -1922,6 +1924,15 @@ WW8TabDesc::WW8TabDesc(SwWW8ImplReader* pIoClass, WW8_CP nStartCp) : const sal_uInt8 b2 = pParams[2]; if (b0 == 3) // Twips m_nPreferredWidth = b2 * 0x100 + b1; + else if (b0 == 2) // percent in fiftieths of a percent + { + m_nPercentWidth = (b2 * 0x100 + b1); + // MS documentation: non-negative, and 600% max + if ( m_nPercentWidth >= 0 && m_nPercentWidth <= 30000 ) + m_nPercentWidth *= .02; + else + m_nPercentWidth = 100; + } } break; case sprmTTextFlow: @@ -2537,8 +2548,11 @@ void WW8TabDesc::CreateSwTable() // total width of table if( m_nMaxRight - m_nMinLeft > MINLAY * m_nDefaultSwCols ) { - m_pTable->GetFrameFormat()->SetFormatAttr(SwFormatFrameSize(ATT_FIX_SIZE, m_nSwWidth)); - m_aItemSet.Put(SwFormatFrameSize(ATT_FIX_SIZE, m_nSwWidth)); + SwFormatFrameSize aFrameSize(ATT_FIX_SIZE, m_nSwWidth); + if( m_nPercentWidth ) + aFrameSize.SetWidthPercent(m_nPercentWidth); + m_pTable->GetFrameFormat()->SetFormatAttr(aFrameSize); + m_aItemSet.Put(aFrameSize); } SvxFrameDirectionItem aDirection( _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
