From ee7c607b5e8e4d3bdb7e4af6058d24ed9586c705 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Tue, 24 Mar 2020 12:01:43 +0100 Subject: [PATCH] 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. (cherry picked from commit eb92f74d1f7ae63112b9439058d746f7ff93e8f4) --- src/TextMetrics.cpp | 18 +++++++++--------- status.23x | 2 ++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 070a880e62..91a173a3a5 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -1919,15 +1919,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::TEXT_TO_INSET_OFFSET, - y - row.ascent(), - width() + 2 * Inset::TEXT_TO_INSET_OFFSET, + // 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); } diff --git a/status.23x b/status.23x index 8a695f8b12..050d93bdc1 100644 --- a/status.23x +++ b/status.23x @@ -86,6 +86,8 @@ What's new - Add copy, paste, etc, to math context menu (but 11799). +- Avoid bleeding of inset background outside of inset (bug 11786). + * INTERNALS -- 2.39.5