sw/qa/extras/ooxmlexport/data/tablePreferredWidth.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 13 +++++++++++ sw/source/filter/ww8/docxattributeoutput.cxx | 19 ++++++++++++++--- 3 files changed, 29 insertions(+), 3 deletions(-)
New commits: commit 533e435acd116615b4c6d4872f51b467d623ddd6 Author: YogeshBharate <yogesh.bhar...@synerzip.com> Date: Thu May 8 13:04:08 2014 +0530 fdo#78325: Table Preferred width in percent is not preserved after RT. Problem Description : - After RT, table preferred width in percent is change to '0'. - After RT, width type change to 'auto' instead of 'pct'. XML Difference: In Original : <w:tblW w:w="3000" w:type="pct" /> In Roundtrip : <w:tblW w:w="0" w:type="auto" /> Change-Id: I20f4011520715b7c1555e82dd1ca590c4b1b9b3a Reviewed-on: https://gerrit.libreoffice.org/9277 Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> Tested-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/sw/qa/extras/ooxmlexport/data/tablePreferredWidth.docx b/sw/qa/extras/ooxmlexport/data/tablePreferredWidth.docx new file mode 100644 index 0000000..6546be9 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tablePreferredWidth.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 6564776..e2c7e58 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -3217,6 +3217,19 @@ DECLARE_OOXMLEXPORT_TEST(testFloatingTable, "fdo77887.docx") } +DECLARE_OOXMLEXPORT_TEST(testTablePreferredWidth, "tablePreferredWidth.docx") +{ + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + + if(!pXmlDoc) + return; + + // Problem :If the table preferred width is in percent, then after RT it changes to 0 & width type changes + // to 'auto' instead of 'pct'. + assertXPath(pXmlDoc, "/w:document[1]/w:body[1]/w:tbl[1]/w:tblPr[1]/w:tblW[1]", "w", "3000"); + assertXPath(pXmlDoc, "/w:document[1]/w:body[1]/w:tbl[1]/w:tblPr[1]/w:tblW[1]", "type","pct"); +} + DECLARE_OOXMLEXPORT_TEST(testFDO75431, "fdo75431.docx") { xmlDocPtr pXmlDoc = parseExport("word/document.xml"); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 4f29904..e969c0c 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -2679,17 +2679,30 @@ void DocxAttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t const char* widthType = "dxa"; bool bRelBoxSize = false; - // If actual width of table is relative it shoud export is as "auto". + // If actual width of table is relative it shoud export is as "pct".` const SwTable *pTable = pTableTextNodeInfoInner->getTable(); SwFrmFmt *pTblFmt = pTable->GetFrmFmt( ); + const SwFmtFrmSize &rSize = pTblFmt->GetFrmSize(); + int nWidthPercent = rSize.GetWidthPercent(); uno::Reference<beans::XPropertySet> xPropertySet(SwXTextTables::GetObject(const_cast<SwFrmFmt&>(*pTable->GetFrmFmt( ))),uno::UNO_QUERY); bool isWidthRelative = false; xPropertySet->getPropertyValue("IsWidthRelative") >>= isWidthRelative; if(isWidthRelative) { - nPageSize = 0; - widthType = "auto"; + /** + * As per ECMA Specification : ECMA-376, Second Edition, Part 1 - Fundamentals And Markup Language Reference [ 17.18.90 ST_TblWidth (Table Width Units)] + * http://www.schemacentral.com/sc/ooxml/a-w_type-7.html + * + * Fiftieths of a Percent : + * http://startbigthinksmall.wordpress.com/2010/01/04/points-inches-and-emus-measuring-units-in-office-open-xml/ + * pct Width is in Fiftieths of a Percent + * + * ex. If the Table width is 50% then + * Width in Fiftieths of a percent is (50 * 50) % or 0.5 * 5000 = 2500pct + **/ + nPageSize = nWidthPercent * 50 ; + widthType = "pct" ; } else { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits