]> git.lyx.org Git - features.git/commitdiff
Make sure that spelling marks do not spill ouside of row
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Sat, 22 Feb 2020 16:59:37 +0000 (17:59 +0100)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 18 Jun 2020 13:48:52 +0000 (15:48 +0200)
This avoids annoying remnants of dotted red lines.

Fixes bug #11755.

src/RowPainter.cpp

index 16ff19519659766b4de3ba2c4c53a6f3ab6c5b9a..6e4cf31ac10eed23dd7016d30067091ec4fd27b1 100644 (file)
@@ -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