From: Jean-Marc Lasgouttes Date: Fri, 25 May 2018 15:08:45 +0000 (+0200) Subject: Draw frame last when drawing text insets X-Git-Tag: lyx-2.4.0dev-acb2ca7b~3394 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=4e9084b3e48697efc3eb4cc7a76b87f99a5e4aed;p=features.git Draw frame last when drawing text insets This avoid cases where the blinking cursor erases the frame. --- diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index 0cff7cee0a..78d5ad5e89 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -220,11 +220,25 @@ 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 (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 + // color of the frame + pi.change_.paintCue(pi, xframe, yframe, xframe + w, yframe + h); + + 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,21 +256,8 @@ 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); + 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); - } - 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 - // color of the frame - pi.change_.paintCue(pi, xframe, yframe, xframe + w, yframe + h); }