diff options
author | Szabolcs Toth <szabolcs450@gmail.com> | 2020-02-20 10:54:19 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2021-07-08 14:05:34 +0200 |
commit | 546d94f864ed866fac9ba3790950820d60991e6f (patch) | |
tree | 064fadfe044eb397af3f8ccd24e0829fcc0e7a97 | |
parent | avoid windres preprocessor quoting-messups with current cygwin (diff) | |
download | core-546d94f864ed866fac9ba3790950820d60991e6f.tar.gz core-546d94f864ed866fac9ba3790950820d60991e6f.zip |
tdf#130799 DOCX import: fix missing inside vertical borders
caused by incomplete handling of tables with 1-column
rows with merged cells.
Have to check the rows below current to see if they contain
also one cell, therefore form a column, or more than one cell,
in which case do not remove vertical borders.
Regression from commit: 8a2eb40abbd52d960dd21308157186be0ca9dd3d
(tdf#129442 DOCX import: fix right border of 1-column tables).
Change-Id: If9ca7ccd42255e78c61b6271e19262ab5cc8e439
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89081
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport3.cxx | 11 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 12 |
2 files changed, 22 insertions, 1 deletions
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx index 3726c9022b97..b1c8c98ba8fc 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx @@ -1048,6 +1048,17 @@ DECLARE_OOXMLEXPORT_TEST(testBottomBorders, "tdf129452_BottomBorders.docx") assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[4]/w:tc[2]/w:tcPr/w:tcBorders/w:bottom [@w:val = 'nil']", 0); } +DECLARE_OOXMLEXPORT_TEST(testVerticalBorders, "calendar3.docx") +{ + // tdf#130799: Inside vertical borders of a table should not be missing. + + xmlDocPtr pXmlDocument = parseExport("word/document.xml"); + if (!pXmlDocument) + return; + // Left and right borders. + assertXPathChildren(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[3]/w:tc[3]/w:tcPr/w:tcBorders", 2); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 4cb518eb29d8..458feaa6cd96 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -836,7 +836,17 @@ CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(Tabl // Do not apply vertical borders to a one column table. else if (m_aCellProperties.size() > 1 && aRowOfCellsIterator->size() <= 1) { - rInfo.pTableBorders->Erase(META_PROP_VERTICAL_BORDER); + bool isOneCol = true; + for (size_t i = nRow; i < m_aCellProperties.size(); i++) + { + if (m_aCellProperties[i].size() > 1) + { + isOneCol = false; + break; + } + } + if (isOneCol) + rInfo.pTableBorders->Erase(META_PROP_VERTICAL_BORDER); } // Do not apply horizontal borders to a one row table. else if (m_aCellProperties.size() == 1 && aRowOfCellsIterator->size() > 1) |