From 7d54d78691a02b090da75da15fabc81e27552cad Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 13 Mar 2020 16:23:01 +0100 Subject: [PATCH] Revert "Do not display caret when we're not ready" I did not mean to push this. This reverts commit 9bc255dc89b58bfdb2d9692136b2f2715eab256b. --- src/frontends/qt/GuiWorkArea.cpp | 36 +++++++++++++++----------- src/frontends/qt/GuiWorkArea_Private.h | 6 ++--- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/frontends/qt/GuiWorkArea.cpp b/src/frontends/qt/GuiWorkArea.cpp index 2500afe4db..ab13c687d7 100644 --- a/src/frontends/qt/GuiWorkArea.cpp +++ b/src/frontends/qt/GuiWorkArea.cpp @@ -439,6 +439,14 @@ void GuiWorkArea::stopBlinkingCaret() void GuiWorkArea::startBlinkingCaret() { + // do not show the cursor if the view is busy + if (view().busy()) + return; + + // Don't start blinking if the cursor isn't on screen. + if (!d->buffer_view_->caretInView()) + return; + d->showCaret(); // Avoid blinking when debugging PAINTING, since it creates too much noise @@ -633,26 +641,24 @@ void GuiWorkArea::Private::updateCaretGeometry() } -void GuiWorkArea::Private::showCaret(bool show) +void GuiWorkArea::Private::showCaret() { - if (caret_visible_ == show) + if (caret_visible_) return; - caret_visible_ = show; - /** - * Do not trigger the painting machinery if either - * 1. the view is busy (no updates at all) - * 2. The we are not ready because document is being modified (see bug #11763) - * 3. The caret is outside of screen anyway. - */ - if (p->view().busy() - || buffer_view_->buffer().undo().activeUndoGroup() - || !buffer_view_->caretInView()) + updateCaretGeometry(); + p->viewport()->update(); +} + + +void GuiWorkArea::Private::hideCaret() +{ + if (!caret_visible_) return; - if (caret_visible_) - updateCaretGeometry(); - p->viewport()->update(); + caret_visible_ = false; + //if (!qApp->focusWidget()) + p->viewport()->update(); } diff --git a/src/frontends/qt/GuiWorkArea_Private.h b/src/frontends/qt/GuiWorkArea_Private.h index 75ad98dbdc..6342eaba4a 100644 --- a/src/frontends/qt/GuiWorkArea_Private.h +++ b/src/frontends/qt/GuiWorkArea_Private.h @@ -87,10 +87,10 @@ struct GuiWorkArea::Private void dispatch(FuncRequest const & cmd0); /// recompute the shape and position of the caret void updateCaretGeometry(); - /// show the caret if it is not visible. Same as \c hideCaret when \c show is false. - void showCaret(bool show = true); + /// show the caret if it is not visible + void showCaret(); /// hide the caret if it is visible - void hideCaret() { showCaret(false); } + void hideCaret(); /// Set the range and value of the scrollbar and connect to its valueChanged /// signal. void updateScrollbar(); -- 2.39.2