commit 57b400cdffa7f0008adf5c697604e5110ea9b304
Author: Jean-Marc Lasgouttes <[email protected]>
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
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs