sw/qa/extras/ooxmlexport/data/tdf129452_BottomBorders.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport3.cxx | 3 +++ writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 6 ++++-- 3 files changed, 7 insertions(+), 2 deletions(-)
New commits: commit 19ffc31ac047e9e8986591937ad945bc7dc2b875 Author: Justin Luth <justin.l...@collabora.com> AuthorDate: Tue Jul 7 10:36:12 2020 +0300 Commit: Justin Luth <justin_l...@sil.org> CommitDate: Wed Jul 15 21:11:33 2020 +0200 tdf129452 writerfilter: only affect vertical Merge_restart If multiple merged cells are stacked on top of each other, then don't follow the whole stack down to the bottom as if it is one cell. In other words, merged-vertically is not true or false, but start or continuing. This stand-alone patch covers a corner case missed by this bug's earlier LO 6.4 commit. Change-Id: Ibaec6d609ff5b8a993be8dce0741fa2ca905da26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98242 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_l...@sil.org> diff --git a/sw/qa/extras/ooxmlexport/data/tdf129452_BottomBorders.docx b/sw/qa/extras/ooxmlexport/data/tdf129452_BottomBorders.docx index 0e8ddd6d3833..399c06be1a30 100644 Binary files a/sw/qa/extras/ooxmlexport/data/tdf129452_BottomBorders.docx and b/sw/qa/extras/ooxmlexport/data/tdf129452_BottomBorders.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx index c32928cccdf2..99c908351898 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx @@ -1059,6 +1059,9 @@ DECLARE_OOXMLEXPORT_TEST(testBottomBorders, "tdf129452_BottomBorders.docx") assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[4]/w:tc[1]/w:tcPr/w:tcBorders/w:bottom [@w:val = 'nil']", 0); assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[4]/w:tc[2]/w:tcPr/w:tcBorders/w:bottom [@w:val = 'nil']", 0); + + // But also don't treat separately merged cells as one - the topmost merged cell shouldn't gain a border. + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[1]/w:tc[4]/w:tcPr/w:tcBorders/w:bottom", 0); } DECLARE_OOXMLEXPORT_TEST(testFontTypes, "tdf120344_FontTypes.docx") diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 901fdfc0c115..2046d36db613 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -907,7 +907,8 @@ CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(Tabl // tdf#129452 Checking if current cell is vertically merged with all the other cells below to the bottom. // This must be done in order to apply the bottom border of the table to the first cell in a vertical merge. - bool bMergedVertically = bool(m_aCellProperties[nRow][nCell]->getProperty(PROP_VERTICAL_MERGE)); + std::optional<PropertyMap::Property> oProp = m_aCellProperties[nRow][nCell]->getProperty(PROP_VERTICAL_MERGE); + bool bMergedVertically = oProp && oProp->second.get<bool>(); // starting cell if ( bMergedVertically ) { const sal_uInt32 nColumn = m_rDMapper_Impl.getTableManager().findColumn(nRow, nCell); @@ -916,7 +917,8 @@ CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(Tabl const sal_uInt32 nColumnCell = m_rDMapper_Impl.getTableManager().findColumnCell(i, nColumn); if ( m_aCellProperties[i].size() > sal::static_int_cast<std::size_t>(nColumnCell) ) { - bMergedVertically = bool(m_aCellProperties[i][nColumnCell]->getProperty(PROP_VERTICAL_MERGE)); + oProp = m_aCellProperties[i][nColumnCell]->getProperty(PROP_VERTICAL_MERGE); + bMergedVertically = oProp && !oProp->second.get<bool>(); //continuing cell } else bMergedVertically = false; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits