commit 57b400cdffa7f0008adf5c697604e5110ea9b304
Author: Jean-Marc Lasgouttes <lasgout...@lyx.org>
Date:   Sat Feb 22 17:59:37 2020 +0100

    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 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index 16ff195..6e4cf31 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
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to