Blob Blame History Raw
From baec88396e0f1910ac3d4d1a1f87b45a90ba0342 Mon Sep 17 00:00:00 2001
From: Michael Stahl <mstahl@redhat.com>
Date: Thu, 30 Mar 2017 23:11:41 +0200
Subject: [PATCH] writerfilter: DOCX import: fix handling of w:hideMark vs.
 w:vMerge

The problem is that Writer's layout can't handle the case where cells
are vertically merged and the last row has a fixed height; the vertically
merged cell will grow up to the height of the other cells in the non-
fixed rows plus the fixed row height, but no larger.

So for now, avoid setting fixed row heights in this case.

(regression from d1278ef4849661b9ae0eb7aaf4d74fbf91ccaf11)

(cherry picked from commit c382c998ffdaf80c10a3f078fb4f0a37224d1158)
Reviewed-on: https://gerrit.libreoffice.org/35960
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
(cherry picked from commit 7d7d21cfa53c8e80fd4dd0938579d8377da5a840)

Change-Id: Iac3689e0bb0d5b8a62115ca0fb1f2c553a6e6bbc
---
 writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index d21f5f7..dbe7cc5 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -870,8 +870,12 @@ CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(Tabl
 bool lcl_hideMarks(PropertyMapVector1& rCellProperties)
 {
     for (size_t nCell = 0; nCell < rCellProperties.size(); ++nCell)
-        if (!rCellProperties[nCell]->isSet(PROP_CELL_HIDE_MARK))
+    {
+        // if anything is vertically merged, the row must not be set to fixed
+        // as Writer's layout doesn't handle that well
+        if (!rCellProperties[nCell]->isSet(PROP_CELL_HIDE_MARK) || rCellProperties[nCell]->isSet(PROP_VERTICAL_MERGE))
             return false;
+    }
     return true;
 }
 
-- 
2.9.3