From 1247f2f3d8f343e0e809a1aec0ce0e20005caafd Mon Sep 17 00:00:00 2001 From: László Németh Date: Tue, 9 Mar 2021 11:11:10 +0100 Subject: tdf#140597 DOCX import: fix missing tblPrEx border MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit of first table cells, caused by the workaround for tdf#138612. Now property set of a new cell is a copy of the table exception property set of the table row, as needed for the import of the table style inheritance. Regression from commit f319d6b543c2367546bc80d138e56ed03731e265 (tdf#138612 DOCX import: fix lost part of split table cell). Change-Id: Iaf6637e757fbfeef7651a4300a7f65a23615f5c5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112247 Tested-by: Jenkins Reviewed-by: László Németh (cherry picked from commit 53884e8fe92597e909e4fa5599192783c3d31a56) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112225 Reviewed-by: Xisco Fauli --- sw/qa/extras/ooxmlexport/data/tdf140597.docx | Bin 0 -> 13966 bytes sw/qa/extras/ooxmlexport/ooxmlexport5.cxx | 13 +++++++++++++ writerfilter/source/dmapper/TableManager.hxx | 11 ++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 sw/qa/extras/ooxmlexport/data/tdf140597.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf140597.docx b/sw/qa/extras/ooxmlexport/data/tdf140597.docx new file mode 100644 index 000000000000..36db7d9bea2b Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf140597.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx index e6645a0e819f..503d0069a3f7 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx @@ -760,6 +760,19 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf138612, "tdf138612.docx") assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[6]/w:tc[2]/w:tcPr/w:vMerge", 0); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf140597, "tdf140597.docx") +{ + xmlDocUniquePtr pXmlDocument = parseExport("word/document.xml"); + + // There were missing tblPrEx table exception borders + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[2]/w:tc[1]/w:tcPr/w:tcBorders/w:top"); + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[2]/w:tc[1]/w:tcPr/w:tcBorders/w:start"); + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[3]/w:tc[1]/w:tcPr/w:tcBorders/w:top"); + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[3]/w:tc[1]/w:tcPr/w:tcBorders/w:start"); + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[4]/w:tc[1]/w:tcPr/w:tcBorders/w:top"); + assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[4]/w:tc[1]/w:tcPr/w:tcBorders/w:start"); +} + DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf128646, "tdf128646.docx") { // The problem was that not hidden shapes anchored to empty hidden paragraphs were imported as hidden. diff --git a/writerfilter/source/dmapper/TableManager.hxx b/writerfilter/source/dmapper/TableManager.hxx index 5e18becab606..ec064b17ccfc 100644 --- a/writerfilter/source/dmapper/TableManager.hxx +++ b/writerfilter/source/dmapper/TableManager.hxx @@ -114,7 +114,14 @@ class TableManager : public virtual SvRefBase void resetCellProps() { - mpCellProps = getTableExceptionProps(); + // copy tblPrEx table exception properties, if they exist + if (getTableExceptionProps().is()) + { + mpCellProps = new TablePropertyMap; + mpCellProps->InsertProps(getTableExceptionProps().get()); + } + else + mpCellProps.clear(); } void setCellProps(TablePropertyMapPtr pProps) @@ -149,6 +156,8 @@ class TableManager : public virtual SvRefBase void setTableExceptionProps(TablePropertyMapPtr pProps) { mpTableExceptionProps = pProps; + // set table exception properties of the first cell + resetCellProps(); } const TablePropertyMapPtr& getTableExceptionProps() const -- cgit v1.2.3