diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-03-30 23:11:41 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2017-04-04 12:19:41 +0200 |
commit | f89a29c9268b3cf3d8d7beaedb5011b14cd18151 (patch) | |
tree | d2ff53a5bd4fe711ba140c6fd7dd62f60dd46f86 /writerfilter | |
parent | e617bf01e3d7593d41f60c4a56a69caddf93c64e (diff) |
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)
Change-Id: Iac3689e0bb0d5b8a62115ca0fb1f2c553a6e6bbc
(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)
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 81220bdfec2d..36f30a36c39c 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -875,8 +875,12 @@ CellPropertyValuesSeq_t DomainMapperTableHandler::endTableGetCellProperties(Tabl bool lcl_hideMarks(PropertyMapVector1& rCellProperties) { for (PropertyMapPtr & p : rCellProperties) - if (!p->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 (!p->isSet(PROP_CELL_HIDE_MARK) || p->isSet(PROP_VERTICAL_MERGE)) return false; + } return true; } |