sw/qa/extras/ooxmlexport/ooxmlexport10.cxx               |   11 +++++++----
 writerfilter/source/dmapper/DomainMapperTableManager.cxx |   12 ++++++++++--
 writerfilter/source/dmapper/TableManager.hxx             |    2 ++
 3 files changed, 19 insertions(+), 6 deletions(-)

New commits:
commit 835f0e940a600cfac0ac41efb8a4e6015a122dd7
Author:     László Németh <nem...@numbertext.org>
AuthorDate: Tue Nov 26 16:42:15 2019 +0100
Commit:     Xisco Faulí <xiscofa...@libreoffice.org>
CommitDate: Wed Nov 27 12:05:31 2019 +0100

    tdf#76586 fix table width of auto-width nested tables
    
    when they have (sometimes incorrect) fixed cell widths.
    
    Change-Id: I98bf37bfce72b84eed14e354520e4741ae2ddada
    Reviewed-on: https://gerrit.libreoffice.org/83787
    Reviewed-by: László Németh <nem...@numbertext.org>
    Tested-by: László Németh <nem...@numbertext.org>
    (cherry picked from commit 001e11c8f4a52a2eb308562bdee8516efb77b96b)
    Reviewed-on: https://gerrit.libreoffice.org/83851
    Tested-by: Jenkins
    Reviewed-by: Xisco Faulí <xiscofa...@libreoffice.org>

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
index b9efb409a456..8d084d3afbad 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
@@ -374,10 +374,13 @@ DECLARE_OOXMLEXPORT_TEST(testFdo69649, "fdo69649.docx")
 
 DECLARE_OOXMLEXPORT_TEST(testFdo73389,"fdo73389.docx")
 {
-    uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY);
-    // This was 9340, i.e. the width of the inner table was too large.
-    CPPUNIT_ASSERT_EQUAL(sal_Int32(2842), 
getProperty<sal_Int32>(xTables->getByIndex(0), "Width"));
+    // The width of the inner table was too large. The first fix still 
converted
+    // the "auto" table width to a fixed one. The recent fix uses variable 
width.
+    xmlDocPtr pXmlDoc = parseExport();
+    if (!pXmlDoc)
+        return;
+    assertXPath(pXmlDoc, 
"/w:document/w:body/w:tbl/w:tr/w:tc/w:tbl/w:tblPr/w:tblW","type","pct");
+    assertXPath(pXmlDoc, 
"/w:document/w:body/w:tbl/w:tr/w:tc/w:tbl/w:tblPr/w:tblW","w","5000");
 }
 
 DECLARE_OOXMLEXPORT_TEST(testDMLGroupshapeSdt, "dml-groupshape-sdt.docx")
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx 
b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index e29637583631..3a3b713723ee 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -644,8 +644,16 @@ void DomainMapperTableManager::endOfRowAction()
         {
             if(nTableWidth > 100 || nTableWidth <= 0)
             {
-                pTablePropMap->setValue(TablePropertyMap::TABLE_WIDTH, 
m_nTableWidth);
-                pTablePropMap->setValue(TablePropertyMap::TABLE_WIDTH_TYPE, 
text::SizeType::FIX);
+                if(getTableDepth() > 1 && !m_bTableSizeTypeInserted)
+                {
+                    pTablePropMap->setValue(TablePropertyMap::TABLE_WIDTH, 
sal_Int32(100));
+                    
pTablePropMap->setValue(TablePropertyMap::TABLE_WIDTH_TYPE, 
text::SizeType::VARIABLE);
+                }
+                else
+                {
+                    pTablePropMap->setValue(TablePropertyMap::TABLE_WIDTH, 
m_nTableWidth);
+                    
pTablePropMap->setValue(TablePropertyMap::TABLE_WIDTH_TYPE, 
text::SizeType::FIX);
+                }
             }
         }
         uno::Sequence< text::TableColumnSeparator > aSeparators( m_nCell.back( 
) - 1 );
diff --git a/writerfilter/source/dmapper/TableManager.hxx 
b/writerfilter/source/dmapper/TableManager.hxx
index 6c7a9ea1e21e..47947ee724ee 100644
--- a/writerfilter/source/dmapper/TableManager.hxx
+++ b/writerfilter/source/dmapper/TableManager.hxx
@@ -328,6 +328,8 @@ protected:
      */
     sal_uInt32 getTableDepthDifference() const { return mnTableDepthNew - 
mnTableDepth; }
 
+    sal_uInt32 getTableDepth() const { return mnTableDepthNew; }
+
     /**
        Action to be carried out at the end of the last paragraph of a
        cell.
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to