mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 05:16:21 +00:00
Create new method GuiWorkArea::Private:::updateCaretGeometry
This replaces a showCaret/hideCaret pair and avoids an update. Also remove an update() call in resizeBufferView: is is not necessary since we are already in a pintEvent handler.
This commit is contained in:
parent
92628a2990
commit
add342d088
@ -467,14 +467,12 @@ void GuiWorkArea::scheduleRedraw(bool update_metrics)
|
|||||||
|
|
||||||
// update caret position, because otherwise it has to wait until
|
// update caret position, because otherwise it has to wait until
|
||||||
// the blinking interval is over
|
// the blinking interval is over
|
||||||
if (d->caret_visible_) {
|
d->updateCaretGeometry();
|
||||||
d->hideCaret();
|
|
||||||
d->showCaret();
|
|
||||||
}
|
|
||||||
|
|
||||||
LYXERR(Debug::WORKAREA, "WorkArea::redraw screen");
|
LYXERR(Debug::WORKAREA, "WorkArea::redraw screen");
|
||||||
viewport()->update();
|
viewport()->update();
|
||||||
|
|
||||||
|
/// FIXME: is this still true now that paintEvent does the actual painting?
|
||||||
/// \warning: scrollbar updating *must* be done after the BufferView is drawn
|
/// \warning: scrollbar updating *must* be done after the BufferView is drawn
|
||||||
/// because \c BufferView::updateScrollbar() is called in \c BufferView::draw().
|
/// because \c BufferView::updateScrollbar() is called in \c BufferView::draw().
|
||||||
d->updateScrollbar();
|
d->updateScrollbar();
|
||||||
@ -572,7 +570,7 @@ void GuiWorkArea::Private::resizeBufferView()
|
|||||||
buffer_view_->resize(p->viewport()->width(), p->viewport()->height());
|
buffer_view_->resize(p->viewport()->width(), p->viewport()->height());
|
||||||
if (caret_in_view)
|
if (caret_in_view)
|
||||||
buffer_view_->scrollToCursor();
|
buffer_view_->scrollToCursor();
|
||||||
p->viewport()->update();
|
updateCaretGeometry();
|
||||||
|
|
||||||
// Update scrollbars which might have changed due different
|
// Update scrollbars which might have changed due different
|
||||||
// BufferView dimension. This is especially important when the
|
// BufferView dimension. This is especially important when the
|
||||||
@ -590,11 +588,8 @@ void GuiWorkArea::Private::resizeBufferView()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GuiWorkArea::Private::showCaret()
|
void GuiWorkArea::Private::updateCaretGeometry()
|
||||||
{
|
{
|
||||||
if (caret_visible_)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Point point;
|
Point point;
|
||||||
int h = 0;
|
int h = 0;
|
||||||
buffer_view_->caretPosAndHeight(point, h);
|
buffer_view_->caretPosAndHeight(point, h);
|
||||||
@ -629,7 +624,15 @@ void GuiWorkArea::Private::showCaret()
|
|||||||
point.x_ -= buffer_view_->horizScrollOffset();
|
point.x_ -= buffer_view_->horizScrollOffset();
|
||||||
|
|
||||||
caret_->update(point.x_, point.y_, h, l_shape, isrtl, completable);
|
caret_->update(point.x_, point.y_, h, l_shape, isrtl, completable);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GuiWorkArea::Private::showCaret()
|
||||||
|
{
|
||||||
|
if (caret_visible_)
|
||||||
|
return;
|
||||||
|
|
||||||
|
updateCaretGeometry();
|
||||||
p->viewport()->update(caret_->rect());
|
p->viewport()->update(caret_->rect());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1225,13 +1228,8 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
|
|||||||
// LYXERR(Debug::PAINTING, "paintEvent begin: x: " << rc.x()
|
// LYXERR(Debug::PAINTING, "paintEvent begin: x: " << rc.x()
|
||||||
// << " y: " << rc.y() << " w: " << rc.width() << " h: " << rc.height());
|
// << " y: " << rc.y() << " w: " << rc.width() << " h: " << rc.height());
|
||||||
|
|
||||||
if (d->need_resize_ || pixelRatio() != d->last_pixel_ratio_) {
|
if (d->need_resize_ || pixelRatio() != d->last_pixel_ratio_)
|
||||||
d->resizeBufferView();
|
d->resizeBufferView();
|
||||||
if (d->caret_visible_) {
|
|
||||||
d->hideCaret();
|
|
||||||
d->showCaret();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
d->last_pixel_ratio_ = pixelRatio();
|
d->last_pixel_ratio_ = pixelRatio();
|
||||||
|
|
||||||
|
@ -85,10 +85,12 @@ struct GuiWorkArea::Private
|
|||||||
|
|
||||||
///
|
///
|
||||||
void dispatch(FuncRequest const & cmd0);
|
void dispatch(FuncRequest const & cmd0);
|
||||||
/// hide the visible caret, if it is visible
|
/// recompute the shape and position of the caret
|
||||||
void hideCaret();
|
void updateCaretGeometry();
|
||||||
/// show the caret if it is not visible
|
/// show the caret if it is not visible
|
||||||
void showCaret();
|
void showCaret();
|
||||||
|
/// hide the caret if it is visible
|
||||||
|
void hideCaret();
|
||||||
/// Set the range and value of the scrollbar and connect to its valueChanged
|
/// Set the range and value of the scrollbar and connect to its valueChanged
|
||||||
/// signal.
|
/// signal.
|
||||||
void updateScrollbar();
|
void updateScrollbar();
|
||||||
|
Loading…
Reference in New Issue
Block a user