[LyX/master] Revert "Do not display caret when we're not ready"

Jean-Marc Lasgouttes lasgouttes at lyx.org
Fri Mar 13 15:03:42 UTC 2020


commit 7d54d78691a02b090da75da15fabc81e27552cad
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Mar 13 16:23:01 2020 +0100

    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 2500afe..ab13c68 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 75ad98d..6342eab 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();


More information about the lyx-cvs mailing list