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