Revert "Fixup 5202d44e: make caret geometry update lazy"

Something is wrong with the cursor.

This reverts commit dc35f1ddf4.
This commit is contained in:
Jean-Marc Lasgouttes 2020-09-07 16:00:06 +02:00
parent dc35f1ddf4
commit b744c3e28a
2 changed files with 6 additions and 18 deletions

View File

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

View File

@ -169,8 +169,6 @@ struct GuiWorkArea::Private
bool clean_;
///
bool externally_modified_;
///
bool needs_caret_geometry_update_;
}; // GuiWorkArea