From 97fe69426dfc54ccb1ee4f49ce8af1c6e81c2e83 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 25 May 2018 17:08:45 +0200 Subject: [PATCH] Draw frame last when drawing text insets This avoid cases where the blinking cursor erases the frame. (cherry picked from commit 4e9084b3e48697efc3eb4cc7a76b87f99a5e4aed) (cherry picked from commit 6bcc7d6e42a53979b5c002ea445cf1e32006571e) --- src/insets/InsetText.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index 523dc5bd53..c2ec43aaac 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -220,11 +220,19 @@ void InsetText::draw(PainterInfo & pi, int x, int y) const int const h = tm.height() + 2 * TEXT_TO_INSET_OFFSET; int const xframe = x + TEXT_TO_INSET_OFFSET / 2; bool change_drawn = false; - if (drawFrame_ || pi.full_repaint) { - if (pi.full_repaint) + if (pi.full_repaint) pi.pain.fillRectangle(xframe, yframe, w, h, pi.backgroundColor(this)); + { + Changer dummy = make_change(pi.background_color, + pi.backgroundColor(this, false)); + // The change tracking cue must not be inherited + Changer dummy2 = make_change(pi.change_, Change()); + tm.draw(pi, x + TEXT_TO_INSET_OFFSET, y); + } + + if (drawFrame_) { // Change color of the frame in tracked changes, like for tabulars. // Only do so if the color is not custom. But do so even if RowPainter // handles the strike-through already. @@ -242,16 +250,9 @@ void InsetText::draw(PainterInfo & pi, int x, int y) const change_drawn = true; } else c = frameColor(); - if (drawFrame_) - pi.pain.rectangle(xframe, yframe, w, h, c); - } - { - Changer dummy = make_change(pi.background_color, - pi.backgroundColor(this, false)); - // The change tracking cue must not be inherited - Changer dummy2 = make_change(pi.change_, Change()); - tm.draw(pi, x + TEXT_TO_INSET_OFFSET, y); + pi.pain.rectangle(xframe, yframe, w, h, c); } + if (canPaintChange(*pi.base.bv) && (!change_drawn || pi.change_.deleted())) // Do not draw the change tracking cue if already done by RowPainter and // do not draw the cue for INSERTED if the information is already in the -- 2.39.5