From 8a59f18b6eb22c43ec10cdc29ba5a13d5feba4f0 Mon Sep 17 00:00:00 2001 From: Szabolcs Toth Date: Thu, 14 Nov 2019 13:32:00 +0100 Subject: [PATCH] tdf#124399 DOCX import: don't apply inside borders to 1-cell tables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extra cell borders appeared on the bottom, top, left or right of the 1-cell tables when only the "inside borders" option was selected. The extra borders were the ones that would normally have appeared as inside borders if there were more than one cells in the table. Change-Id: I05d5f2a5a0168989f220d20a95b6dacf5152f9f7 Reviewed-on: https://gerrit.libreoffice.org/82675 Reviewed-by: László Németh Tested-by: László Németh --- .../data/tdf124399_SingleCellTableBorders.docx | Bin 0 -> 12183 bytes sw/qa/extras/ooxmlexport/ooxmlexport3.cxx | 11 +++++++++++ .../source/dmapper/DomainMapperTableHandler.cxx | 7 +++++++ 3 files changed, 18 insertions(+) create mode 100755 sw/qa/extras/ooxmlexport/data/tdf124399_SingleCellTableBorders.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf124399_SingleCellTableBorders.docx b/sw/qa/extras/ooxmlexport/data/tdf124399_SingleCellTableBorders.docx new file mode 100755 index 0000000000000000000000000000000000000000..edb93b76e1dfa9b550cf6f3f41642a5e41589a4b GIT binary patch literal 12183 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 Z;W6cbzkUD! literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx index ec87951cdeec..c78ecb5aff38 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx @@ -1001,6 +1001,17 @@ DECLARE_OOXMLEXPORT_TEST(testFileOpenInputOutputError,"floatingtbl_with_formula. assertXPathContent(pXmlDoc, "//w:tbl/w:tr/w:tc[2]/w:p/m:oMath/m:sSubSup/m:e/m:r/m:t", u"\u03C3"); } +DECLARE_OOXMLEXPORT_TEST(testSingleCellTableBorders, "tdf124399_SingleCellTableBorders.docx") +{ + // tdf#124399: Extra borders on single cell tables fixed. + + xmlDocPtr pXmlDocument = parseExport("word/document.xml"); + if (!pXmlDocument) + return; + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr/w:tc/w:tcPr/w:tcBorders/w:top [@w:val = 'nil']", 1); + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr/w:tc/w:tcPr/w:tcBorders/w:bottom [@w:val = 'nil']", 1); +} + 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 3996df51d8e4..d6be09fbd4e4 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -823,6 +823,13 @@ CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(Tabl TagLogger::getInstance().attribute("row", nRow); #endif + // Do not apply horizontal and vertical borders to a one cell table. + if (m_aCellProperties.size() <= 1) + { + rInfo.pTableBorders->Erase(META_PROP_HORIZONTAL_BORDER); + rInfo.pTableBorders->Erase(META_PROP_VERTICAL_BORDER); + } + lcl_computeCellBorders( rInfo.pTableBorders, *aCellIterator, nCell, nRow, bIsEndCol, bIsEndRow ); //now set the default left+right border distance TODO: there's an sprm containing the default distance!