From 564e394d21855f3fc7bdfe2c75a809351474c1d2 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Sat, 22 Feb 2020 17:59:37 +0100 Subject: [PATCH] Make sure that spelling marks do not spill ouside of row This avoids annoying remnants of dotted red lines. Fixes bug #11755. --- src/RowPainter.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index 16ff195196..6e4cf31ac1 100644 --- a/src/RowPainter.cpp +++ b/src/RowPainter.cpp @@ -169,10 +169,13 @@ void RowPainter::paintNoSpellingMark(Row::Element const & e) const // We at the same voffset than the misspelled mark, since // these two are mutually exclusive int const desc = e.inset ? e.dim.descent() : 0; - int const y = yo_ + pi_.base.solidLineOffset() + desc + int y = yo_ + pi_.base.solidLineOffset() + desc + pi_.base.solidLineThickness() + (e.change.changed() ? pi_.base.solidLineThickness() + 1 : 0) + 1; + // Make sure that the mark does not go below the row rectangle + y = min(y, yo_ + row_.descent() - 1); + pi_.pain.line(int(x_), y, int(x_ + e.full_width()), y, Color_language, Painter::line_onoffdash, pi_.base.solidLineThickness()); } @@ -186,9 +189,11 @@ void RowPainter::paintMisspelledMark(Row::Element const & e) const // to avoid drawing at the same vertical offset FontMetrics const & fm = theFontMetrics(e.font); int const thickness = max(fm.lineWidth(), 2); - int const y = yo_ + pi_.base.solidLineOffset() + pi_.base.solidLineThickness() + int y = yo_ + pi_.base.solidLineOffset() + pi_.base.solidLineThickness() + (e.change.changed() ? pi_.base.solidLineThickness() + 1 : 0) + 1 + thickness / 2; + // Make sure that the mark does not go below the row rectangle + y = min(y, yo_ + row_.descent() - 1); //FIXME: this could be computed only once, it is probably not costly. // check for cursor position -- 2.39.5