sw: fix unexpected paragraph border inside table cells

Desktop / LibreOffice - Miklos Vajna [collabora.com] - 19 January 2022 08:11 UTC

The bug document has a table cell, which contains a paragraph with borders. Its left/right/bottom borders are rendered in Writer, but not in Word.

The reason for the left/right border is that it's outside the paragraph's frame area, which is not rendered in Word. Fix this by clipping the rendered borders so they don't go outside the paragraph's frame area. (Normally the frame area is the larger rectangle, and then margins may cause a smaller "print area", but in this case we have a negative right margin, so clipping the print area to fit into the frame area actually does something.)

This is quite similar to what commit 1e21902106cbe57658bed03ed24d4d0863685cfd (tdf#117884: intersect border with paint area of upper frame., 2018-05-26) did for table borders.

The bottom border is a different problem: the cell has a fixed height and enough content so the paragraph is cut off vertically. This means that technically the bottom border would be inside the frame area, but Word cuts it off, because they apply clipping on the not-yet-cut-off rectangle. Fix this by dropping the bottom margin when the frame is cut off.

Change-Id: I7f65b68997330b247db65839db8a484e74f78c64 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128569

4a7281fa206c sw: fix unexpected paragraph border inside table cells
.../core/layout/data/para-border-in-cell-clip.docx | Bin 0 -> 12524 bytes
sw/qa/core/layout/layout.cxx | 20 +++++++++++
sw/source/core/layout/paintfrm.cxx | 40 +++++++++++++++++++--
3 files changed, 57 insertions(+), 3 deletions(-)

Upstream: cgit.freedesktop.org

  • Share