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
}
-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();
}
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();