[prev in list] [next in list] [prev in thread] [next in thread]
List: lyx-cvs
Subject: [LyX/master] Avoid bleeding of inset background outside of inset
From: Jean-Marc Lasgouttes <lasgouttes () lyx ! org>
Date: 2020-03-24 10:57:06
Message-ID: 20200324105706.AEE0A280532 () lyx ! lyx ! org
[Download RAW message or body]
commit eb92f74d1f7ae63112b9439058d746f7ff93e8f4
Author: Jean-Marc Lasgouttes <lasgouttes@lyx.org>
Date: Tue Mar 24 12:01:43 2020 +0100
Avoid bleeding of inset background outside of inset
As a consequence of fix e64ea357 to ticket #10797, we draw a bit too
much of the inset background outside of the inset (visible for insets
with colored background). #10797 is a ticket that triggers when the
cursor has a width larger than 1.
This patch limits the problems in two respects
* nothing is done on the left, since the cursor width only expands on
the right.
* on the right, the extra width is limited to cursor width.
Fixes bug #11786.
---
src/TextMetrics.cpp | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 796e1bd..c92af02 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1927,15 +1927,15 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const
LYXERR(Debug::PAINTING, "Clear rect@("
<< max(row_x, 0) << ", " << y - row.ascent() << ")="
<< width() << " x " << row.height());
- // FIXME: this is a hack. We know that at least this
- // amount of pixels can be cleared on right and left.
- // Doing so gets rid of caret ghosts when the cursor is at
- // the begining/end of row. However, it will not work if
- // the caret has a ridiculous width like 6. (see ticket
- // #10797)
- pi.pain.fillRectangle(max(row_x, 0) - Inset::textOffset(pi.base.bv),
- y - row.ascent(),
- width() + 2 * Inset::textOffset(pi.base.bv),
+ // FIXME: this is a hack. We clear an amount equal to
+ // cursor width. This will not work if the caret has a
+ // ridiculous width like 6. (see ticket #10797)
+ // This is the same formula as in GuiWorkArea.
+ int const caret_width = lyxrc.cursor_width
+ ? lyxrc.cursor_width
+ : 1 + int((lyxrc.currentZoom + 50) / 200.0);
+ pi.pain.fillRectangle(max(row_x, 0), y - row.ascent(),
+ width() + caret_width,
row.height(), pi.background_color);
}
--
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic