sw/qa/extras/ooxmlexport/data/tdf77796.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport14.cxx | 12 ++++++ writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 26 +++++++++++++++ writerfilter/source/dmapper/TblStylePrHandler.cxx | 22 ++++++++++++ 4 files changed, 60 insertions(+)
New commits: commit b71cace906bdce1d1b02b11a2d469e93622fd3af Author: László Németh <nem...@numbertext.org> AuthorDate: Mon Jan 6 19:56:03 2020 +0100 Commit: László Németh <nem...@numbertext.org> CommitDate: Tue Jan 7 13:50:33 2020 +0100 tdf#77796 DOCX: import table style based cell padding Change-Id: Ib86ed45fe816d7e273539798cdebdbb95d575518 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86295 Tested-by: Jenkins Reviewed-by: László Németh <nem...@numbertext.org> Tested-by: László Németh <nem...@numbertext.org> diff --git a/sw/qa/extras/ooxmlexport/data/tdf77796.docx b/sw/qa/extras/ooxmlexport/data/tdf77796.docx new file mode 100644 index 000000000000..e42c37daa384 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf77796.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx index 216cdec15c3c..9e277928a8fb 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx @@ -259,6 +259,18 @@ DECLARE_OOXMLEXPORT_TEST(testTdf129353, "tdf129353.docx") aIndexString); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf77796, "tdf77796.docx") +{ + xmlDocPtr pXml = parseExport("word/document.xml"); + CPPUNIT_ASSERT(pXml); + // cell paddings from table style + assertXPath(pXml, "/w:document/w:body/w:tbl/w:tblPr/w:tblCellMar/w:start", "w", "5"); + assertXPath(pXml, "/w:document/w:body/w:tbl/w:tblPr/w:tblCellMar/w:top", "w", "240"); + assertXPath(pXml, "/w:document/w:body/w:tbl/w:tblPr/w:tblCellMar/w:bottom", "w", "480"); + // not modified + assertXPath(pXml, "/w:document/w:body/w:tbl/w:tblPr/w:tblCellMar/w:end", "w", "108"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 77bf9e3f901a..9f376b3c07e8 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -464,6 +464,32 @@ TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(TableInfo m_aTableProperties->Erase( aTblLook->first ); } + // apply cell margin settings of the table style + const o3tl::optional<PropertyMap::Property> oLeftMargin = m_aTableProperties->getProperty(META_PROP_CELL_MAR_LEFT); + if (oLeftMargin) + { + oLeftMargin->second >>= rInfo.nLeftBorderDistance; + m_aTableProperties->Erase(oLeftMargin->first); + } + const o3tl::optional<PropertyMap::Property> oRightMargin = m_aTableProperties->getProperty(META_PROP_CELL_MAR_RIGHT); + if (oRightMargin) + { + oRightMargin->second >>= rInfo.nRightBorderDistance; + m_aTableProperties->Erase(oRightMargin->first); + } + const o3tl::optional<PropertyMap::Property> oTopMargin = m_aTableProperties->getProperty(META_PROP_CELL_MAR_TOP); + if (oTopMargin) + { + oTopMargin->second >>= rInfo.nTopBorderDistance; + m_aTableProperties->Erase(oTopMargin->first); + } + const o3tl::optional<PropertyMap::Property> oBottomMargin = m_aTableProperties->getProperty(META_PROP_CELL_MAR_BOTTOM); + if (oBottomMargin) + { + oBottomMargin->second >>= rInfo.nBottomBorderDistance; + m_aTableProperties->Erase(oBottomMargin->first); + } + // Set the table default attributes for the cells rInfo.pTableDefaults->InsertProps(m_aTableProperties.get()); diff --git a/writerfilter/source/dmapper/TblStylePrHandler.cxx b/writerfilter/source/dmapper/TblStylePrHandler.cxx index 674bb5bd2250..beff017d19a8 100644 --- a/writerfilter/source/dmapper/TblStylePrHandler.cxx +++ b/writerfilter/source/dmapper/TblStylePrHandler.cxx @@ -18,6 +18,7 @@ */ #include "TblStylePrHandler.hxx" +#include "CellMarginHandler.hxx" #include "PropertyMap.hxx" #include <ooxml/resourceids.hxx> #include <comphelper/sequence.hxx> @@ -167,6 +168,27 @@ void TblStylePrHandler::lcl_sprm(Sprm & rSprm) aValue.Name = "tblHeader"; aValue.Value <<= true; m_aInteropGrabBag.push_back(aValue); + } + break; + case NS_ooxml::LN_CT_TblPrBase_tblCellMar: + { + writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); + if ( pProperties.get() ) + { + std::shared_ptr<CellMarginHandler> pCellMarginHandler(new CellMarginHandler); + pCellMarginHandler->enableInteropGrabBag("tblCellMar"); + pProperties->resolve( *pCellMarginHandler ); + m_aInteropGrabBag.push_back(pCellMarginHandler->getInteropGrabBag()); + + if( pCellMarginHandler->m_bTopMarginValid ) + m_pProperties->Insert( META_PROP_CELL_MAR_TOP, uno::makeAny(pCellMarginHandler->m_nTopMargin) ); + if( pCellMarginHandler->m_bBottomMarginValid ) + m_pProperties->Insert( META_PROP_CELL_MAR_BOTTOM, uno::makeAny(pCellMarginHandler->m_nBottomMargin) ); + if( pCellMarginHandler->m_bLeftMarginValid ) + m_pProperties->Insert( META_PROP_CELL_MAR_LEFT, uno::makeAny(pCellMarginHandler->m_nLeftMargin) ); + if( pCellMarginHandler->m_bRightMarginValid ) + m_pProperties->Insert( META_PROP_CELL_MAR_RIGHT, uno::makeAny(pCellMarginHandler->m_nRightMargin) ); + } } break; default: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits