From: Jean-Marc Lasgouttes Date: Fri, 13 Mar 2020 15:23:01 +0000 (+0100) Subject: Revert "Do not display caret when we're not ready" X-Git-Tag: lyx-2.4.0dev-acb2ca7b~1123 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=7d54d78691a02b090da75da15fabc81e27552cad;p=features.git Revert "Do not display caret when we're not ready" I did not mean to push this. This reverts commit 9bc255dc89b58bfdb2d9692136b2f2715eab256b. --- 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();