tdf#140597 DOCX import: fix missing tblPrEx border

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 <nemeth@numbertext.org>
(cherry picked from commit 53884e8fe92597e909e4fa5599192783c3d31a56)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112223
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/sw/qa/extras/ooxmlexport/data/tdf140597.docx b/sw/qa/extras/ooxmlexport/data/tdf140597.docx
new file mode 100644
index 0000000..36db7d9
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf140597.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
index 95f6099..404db9c 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
@@ -749,6 +749,19 @@
    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 2dcf679..3bae322 100644
--- a/writerfilter/source/dmapper/TableManager.hxx
+++ b/writerfilter/source/dmapper/TableManager.hxx
@@ -112,7 +112,14 @@

        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)
@@ -147,6 +154,8 @@
        void setTableExceptionProps(TablePropertyMapPtr pProps)
        {
            mpTableExceptionProps = pProps;
            // set table exception properties of the first cell
            resetCellProps();
        }

        const TablePropertyMapPtr& getTableExceptionProps() const