sw/qa/extras/ooxmlexport/data/tdf124367.docx             |binary
 sw/qa/extras/ooxmlexport/ooxmlexport14.cxx               |   14 ++++++++++++++
 sw/qa/extras/ooxmlexport/ooxmlexport4.cxx                |    2 +-
 sw/qa/extras/ooxmlexport/ooxmlexport8.cxx                |    5 ++++-
 sw/qa/extras/rtfexport/rtfexport5.cxx                    |    2 +-
 sw/qa/extras/rtfimport/rtfimport.cxx                     |    2 +-
 writerfilter/source/dmapper/DomainMapperTableManager.cxx |    4 ++--
 7 files changed, 23 insertions(+), 6 deletions(-)

New commits:
commit c401aa9f632758157021c2c45c5cc4d00ee12dab
Author:     Bakos Attila <bakos.attilakar...@nisz.hu>
AuthorDate: Tue Nov 5 15:30:22 2019 +0100
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Sat Nov 9 18:20:27 2019 +0100

    tdf124367 DOCX import: fix rounding error in table cell widths
    
    Follow-up of commit 29cbbad64088354425c606f9eb6c267bdf7731dc
    (DOCX import: fix rounding error in table cell widths),
    its revert in commit e502463fa9a601963aa9f5a8783eb1318de36c13
    (tdf#123104 DOCX import: fix lack of vertical merge due to rounding)
    and commit 44e44239de35c1548809c96e13bfa9d64c7ca441
    (tdf#120315 DOCX import: fix cells merged vertically).
    
    Change-Id: Id85e8fd25dba26af77fe2fd3024db2ae834b5052
    Reviewed-on: https://gerrit.libreoffice.org/82072
    Reviewed-by: László Németh <nem...@numbertext.org>
    Tested-by: László Németh <nem...@numbertext.org>
    Tested-by: Jenkins

diff --git a/sw/qa/extras/ooxmlexport/data/tdf124367.docx 
b/sw/qa/extras/ooxmlexport/data/tdf124367.docx
new file mode 100644
index 000000000000..0a1356dd0d2b
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf124367.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
index c7f022d68311..12950c8451a7 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -108,6 +108,20 @@ DECLARE_OOXMLEXPORT_TEST(testTdf121661, "tdf121661.docx")
     assertXPath(pXmlSettings, "/w:settings/w:hyphenationZone", "val", "851");
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf124367, "tdf124367.docx")
+{
+    uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, 
uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> 
xTables(xTablesSupplier->getTextTables(),
+                                                    uno::UNO_QUERY);
+    uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), 
uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows = xTextTable->getRows();
+    // it was 2761 at the first import, and 2760 at the second import, due to 
incorrect rounding
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(2762),
+                         
getProperty<uno::Sequence<text::TableColumnSeparator>>(
+                             xTableRows->getByIndex(2), 
"TableColumnSeparators")[0]
+                             .Position);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index f2ce3fb3fe2a..a09479e44ea0 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@ -272,7 +272,7 @@ DECLARE_OOXMLEXPORT_TEST(testSegFaultWhileSave, 
"test_segfault_while_save.docx")
     xmlDocPtr pXmlDoc = parseExport("word/document.xml");
     if (!pXmlDoc)
         return;
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6138), getXPath(pXmlDoc, 
"/w:document/w:body/w:tbl/w:tblGrid/w:gridCol[2]", "w").toInt32());
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6137), getXPath(pXmlDoc, 
"/w:document/w:body/w:tbl/w:tblGrid/w:gridCol[2]", "w").toInt32());
 
     // tdf#106572 - preventative test matching danger conditions, but imported 
OK anyway
     CPPUNIT_ASSERT_EQUAL(OUString("First Page"), 
getProperty<OUString>(getParagraphOrTable(1), "PageDescName"));
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
index a46e3fb5eb63..e5b4ffc9cfdd 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
@@ -884,7 +884,10 @@ DECLARE_OOXMLEXPORT_TEST(testFdo59273, "fdo59273.docx")
 
     uno::Reference<table::XTableRows> xTableRows = xTextTable->getRows();
     // Was 9997, so the 4th column had ~zero width
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(7498), getProperty< 
uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), 
"TableColumnSeparators")[2].Position);
+    CPPUNIT_ASSERT_LESSEQUAL(2, (sal_Int16(7500)
+                                 - 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
+                                       xTableRows->getByIndex(0), 
"TableColumnSeparators")[2]
+                                       .Position));
 }
 
 DECLARE_OOXMLEXPORT_TEST(testConditionalstylesTablelook, 
"conditionalstyles-tbllook.docx")
diff --git a/sw/qa/extras/rtfexport/rtfexport5.cxx 
b/sw/qa/extras/rtfexport/rtfexport5.cxx
index e74e79073348..2a44ad72f1ff 100644
--- a/sw/qa/extras/rtfexport/rtfexport5.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport5.cxx
@@ -944,7 +944,7 @@ DECLARE_RTFEXPORT_TEST(testTdf97035, "tdf97035.rtf")
 
     // First cell width of the second row should be 2300
     uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(2299), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(2300), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
                                               xTableRows->getByIndex(1), 
"TableColumnSeparators")[0]
                                               .Position);
 }
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx 
b/sw/qa/extras/rtfimport/rtfimport.cxx
index d13ba58410f2..ce693e11f717 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -471,7 +471,7 @@ CPPUNIT_TEST_FIXTURE(Test, testFdo55525)
     CPPUNIT_ASSERT_EQUAL(sal_Int32(-1877), getProperty<sal_Int32>(xTable, 
"LeftMargin"));
     // Cell width of A1 was 3332 (e.g. not set, 30% percent of total width)
     uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(896), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(897), 
getProperty<uno::Sequence<text::TableColumnSeparator>>(
                                              xTableRows->getByIndex(0), 
"TableColumnSeparators")[0]
                                              .Position);
 }
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx 
b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index e09dd45f1642..e29637583631 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -666,9 +666,9 @@ void DomainMapperTableManager::endOfRowAction()
                 for ( sal_Int32 nGridCount = *aSpansIter; nGridCount > 0; 
--nGridCount )
                     fGridWidth += (*pTableGrid)[nBorderGridIndex++];
 
-                double nRelPos = static_cast<double>((fGridWidth * 10000) / 
nFullWidthRelative);
+                double nRelPos = (fGridWidth * 10000) / nFullWidthRelative;
 
-                pSeparators[nBorder].Position = sal::static_int_cast< 
sal_Int16 >( nRelPos + nLastRelPos );
+                pSeparators[nBorder].Position = rtl::math::round(nRelPos + 
nLastRelPos);
                 pSeparators[nBorder].IsVisible = true;
                 nLastRelPos = nLastRelPos + nRelPos;
                 ++aSpansIter;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to