sw/qa/extras/ooxmlexport/data/Table_cell_auto_width_fdo69656.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 10 +++ sw/source/filter/ww8/docxattributeoutput.cxx | 33 +++++++--- 3 files changed, 34 insertions(+), 9 deletions(-)
New commits: commit 18044a60957e21222f642b41b03ca1f28716a6d7 Author: sushil_shinde <sushil.shi...@synerzip.com> Date: Wed Jan 22 17:11:58 2014 +0530 fdo#69646 Export of table with auto-width, at least one column with auto-width - In case of auto width to table it should export as auto. - Added Unit Test to check it is properly exporting table. Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport.cxx Reviewed on: https://gerrit.libreoffice.org/7594 Change-Id: Id448111b81110bbc6c109f3da9195075b9b8a9fc diff --git a/sw/qa/extras/ooxmlexport/data/Table_cell_auto_width_fdo69656.docx b/sw/qa/extras/ooxmlexport/data/Table_cell_auto_width_fdo69656.docx new file mode 100644 index 0000000..10b8f9d Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/Table_cell_auto_width_fdo69656.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 94df3e8..b11f4ca 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -2964,6 +2964,16 @@ DECLARE_OOXMLEXPORT_TEST(testDMLShapeFillBitmapCrop, "dml-shape-fillbitmapcrop.d CPPUNIT_ASSERT_EQUAL( sal_Int32( 0 ), aGraphicCropStruct.Bottom ); } + +DECLARE_OOXMLEXPORT_TEST(fdo69656, "Table_cell_auto_width_fdo69656.docx") +{ + // Check for the width type of table and its cells. + xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; + assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tblPr/w:tblW","type","auto"); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 1467692..97ec8b7 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -2234,21 +2234,36 @@ void DocxAttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t m_pSerializer->mark( aSeqOrder ); sal_uInt32 nPageSize = 0; + const char* widthType = "dxa"; bool bRelBoxSize = false; - // Create the SwWriteTable instance to use col spans (and maybe other infos) - GetTablePageSize( pTableTextNodeInfoInner.get(), nPageSize, bRelBoxSize ); + // If actual width of table is relative it shoud export is as "auto". + const SwTable *pTable = pTableTextNodeInfoInner->getTable(); + SwFrmFmt *pTblFmt = pTable->GetFrmFmt( ); + 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"; + } + else + { + // Create the SwWriteTable instance to use col spans (and maybe other infos) + GetTablePageSize( pTableTextNodeInfoInner.get(), nPageSize, bRelBoxSize ); + if(nPageSize == 0) + widthType = "auto"; + } // Output the table preferred width - if ( nPageSize != 0 ) - m_pSerializer->singleElementNS( XML_w, XML_tblW, - FSNS( XML_w, XML_w ), OString::number( nPageSize ).getStr( ), - FSNS( XML_w, XML_type ), "dxa", - FSEND ); + m_pSerializer->singleElementNS( XML_w, XML_tblW, + FSNS( XML_w, XML_w ), OString::number( nPageSize ).getStr( ), + FSNS( XML_w, XML_type ), widthType, + FSEND ); // Output the table alignement - const SwTable *pTable = pTableTextNodeInfoInner->getTable(); - SwFrmFmt *pTblFmt = pTable->GetFrmFmt( ); const char* pJcVal; sal_Int32 nIndent = 0; switch ( pTblFmt->GetHoriOrient( ).GetHoriOrient( ) ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits