commit b744c3e28a7c42639f31bea67a52e92d15a16f62
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Mon Sep 7 16:00:06 2020 +0200

    Revert "Fixup 5202d44e: make caret geometry update lazy"
    
    Something is wrong with the cursor.
    
    This reverts commit dc35f1ddf49f8944001a916ad2bcbf2965401cc4.
---
 src/frontends/qt/GuiWorkArea.cpp       |   22 ++++++----------------
 src/frontends/qt/GuiWorkArea_Private.h |    2 --
 2 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/src/frontends/qt/GuiWorkArea.cpp b/src/frontends/qt/GuiWorkArea.cpp
index 40a98c5..a2af82d 100644
--- a/src/frontends/qt/GuiWorkArea.cpp
+++ b/src/frontends/qt/GuiWorkArea.cpp
@@ -243,7 +243,7 @@ GuiWorkArea::Private::Private(GuiWorkArea * parent)
   caret_visible_(false), need_resize_(false), preedit_lines_(1),
   last_pixel_ratio_(1.0), completer_(new GuiCompleter(p, p)),
   dialog_mode_(false), shell_escape_(false), read_only_(false),
-  clean_(true), externally_modified_(false), needs_caret_geometry_update_(true)
+  clean_(true), externally_modified_(false)
 {
 /* Qt on macOS and Wayland does not respect the
  * Qt::WA_OpaquePaintEvent attribute and resets the widget backing
@@ -487,8 +487,7 @@ void GuiWorkArea::scheduleRedraw(bool update_metrics)
 
        // update caret position, because otherwise it has to wait until
        // the blinking interval is over
-       d->needs_caret_geometry_update_ = true;
-       d->caret_visible_ = true;
+       d->updateCaretGeometry();
 
        LYXERR(Debug::WORKAREA, "WorkArea::redraw screen");
        viewport()->update();
@@ -588,8 +587,7 @@ void GuiWorkArea::Private::resizeBufferView()
        buffer_view_->resize(p->viewport()->width(), p->viewport()->height());
        if (caret_in_view)
                buffer_view_->scrollToCursor();
-       needs_caret_geometry_update_ = true;
-       caret_visible_ = true;
+       updateCaretGeometry();
 
        // Update scrollbars which might have changed due different
        // BufferView dimension. This is especially important when the
@@ -639,20 +637,18 @@ void GuiWorkArea::Private::updateCaretGeometry()
                && completer_->completionAvailable()
                && !completer_->popupVisible()
                && !completer_->inlineVisible();
+       caret_visible_ = true;
 
        caret_->update(point.x_, point.y_, h, l_shape, isrtl, completable);
-       needs_caret_geometry_update_ = false;
 }
 
 
-
 void GuiWorkArea::Private::showCaret()
 {
        if (caret_visible_)
                return;
 
-       needs_caret_geometry_update_ = true;
-       caret_visible_ = true;
+       updateCaretGeometry();
        p->viewport()->update();
 }
 
@@ -1360,14 +1356,8 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
        d->paintPreeditText(pain);
 
        // and the caret
-       // FIXME: the code would be a little bit simpler if caret geometry
-       // was updated unconditionally. Some profiling is required to see
-       // how expensive this is (especially when idle).
-       if (d->caret_visible_) {
-               if (d->needs_caret_geometry_update_)
-                       d->updateCaretGeometry();
+       if (d->caret_visible_)
                d->caret_->draw(pain, d->buffer_view_->horizScrollOffset());
-       }
 
        d->updateScreen(ev->rect());
 
diff --git a/src/frontends/qt/GuiWorkArea_Private.h 
b/src/frontends/qt/GuiWorkArea_Private.h
index 75fad9b..6342eab 100644
--- a/src/frontends/qt/GuiWorkArea_Private.h
+++ b/src/frontends/qt/GuiWorkArea_Private.h
@@ -169,8 +169,6 @@ struct GuiWorkArea::Private
        bool clean_;
        ///
        bool externally_modified_;
-       ///
-       bool needs_caret_geometry_update_;
 
 }; // GuiWorkArea
 
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to