[Libreoffice-commits] core.git: sw/qa writerfilter/source

Bakos Attila (via logerrit) logerrit at kemper.freedesktop.org
Mon Nov 4 08:49:16 UTC 2019


 sw/qa/extras/ooxmlexport/data/tdf120315.docx             |binary
 sw/qa/extras/ooxmlexport/ooxmlexport14.cxx               |   18 +++++++++++++++
 writerfilter/source/dmapper/DomainMapperTableManager.cxx |    7 ++---
 3 files changed, 21 insertions(+), 4 deletions(-)

New commits:
commit 44e44239de35c1548809c96e13bfa9d64c7ca441
Author:     Bakos Attila <bakos.attilakaroly at nisz.hu>
AuthorDate: Mon Oct 28 14:03:11 2019 +0100
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Mon Nov 4 09:48:37 2019 +0100

    tdf#120315 DOCX import: fix cells merged vertically
    
    Due to rounding mistake cells weren't merged vertically,
    when their horizontal positions are different a little bit.
    
    Change-Id: I10623719a3759b35fcd04b154590b8ac6ec3ac45
    Reviewed-on: https://gerrit.libreoffice.org/81604
    Tested-by: Jenkins
    Reviewed-by: László Németh <nemeth at numbertext.org>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf120315.docx b/sw/qa/extras/ooxmlexport/data/tdf120315.docx
new file mode 100644
index 000000000000..d3943ea0b291
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf120315.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
index ceee45bc9bc1..93d896837a36 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -14,6 +14,7 @@
 
 #include <editsh.hxx>
 #include <frmatr.hxx>
+#include <com/sun/star/text/TableColumnSeparator.hpp>
 
 class Test : public SwModelTestBase
 {
@@ -31,6 +32,23 @@ protected:
 };
 
 
+DECLARE_OOXMLEXPORT_TEST(testTdf120315, "tdf120315.docx")
+{
+    // tdf#120315 cells of the second column weren't vertically merged
+    // because their horizontal positions are different a little bit
+    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();
+    CPPUNIT_ASSERT_EQUAL(getProperty<uno::Sequence<text::TableColumnSeparator>>(
+                             xTableRows->getByIndex(0), "TableColumnSeparators")[0]
+                             .Position,
+                         getProperty<uno::Sequence<text::TableColumnSeparator>>(
+                             xTableRows->getByIndex(1), "TableColumnSeparators")[2]
+                             .Position);
+}
+
 DECLARE_OOXMLEXPORT_TEST(testTdf108350_noFontdefaults, "tdf108350_noFontdefaults.docx")
 {
     uno::Reference< container::XNameAccess > paragraphStyles = getStyles("ParagraphStyles");
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index 6adbcdc075f7..e09dd45f1642 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -650,7 +650,7 @@ void DomainMapperTableManager::endOfRowAction()
         }
         uno::Sequence< text::TableColumnSeparator > aSeparators( m_nCell.back( ) - 1 );
         text::TableColumnSeparator* pSeparators = aSeparators.getArray();
-        sal_Int16 nLastRelPos = 0;
+        double nLastRelPos = 0.0;
         sal_uInt32 nBorderGridIndex = m_nGridBefore;
 
         size_t nWidthsBound =  m_nCell.back( ) - 1;
@@ -666,10 +666,9 @@ void DomainMapperTableManager::endOfRowAction()
                 for ( sal_Int32 nGridCount = *aSpansIter; nGridCount > 0; --nGridCount )
                     fGridWidth += (*pTableGrid)[nBorderGridIndex++];
 
-                sal_Int16 nRelPos =
-                    sal::static_int_cast< sal_Int16 >((fGridWidth * 10000) / nFullWidthRelative);
+                double nRelPos = static_cast<double>((fGridWidth * 10000) / nFullWidthRelative);
 
-                pSeparators[nBorder].Position =  nRelPos + nLastRelPos;
+                pSeparators[nBorder].Position = sal::static_int_cast< sal_Int16 >( nRelPos + nLastRelPos );
                 pSeparators[nBorder].IsVisible = true;
                 nLastRelPos = nLastRelPos + nRelPos;
                 ++aSpansIter;


More information about the Libreoffice-commits mailing list