mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 19:25:39 +00:00
* LyXView::updateInset(): schedule a redraw instead of redraw immediately.
* WorkArea::sheduleRedraw(): new pure virtual method. * GuiWorkArea::showCursor(): handle the scheduled redraw. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16708 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
323116ac0e
commit
2ea1ce7851
@ -431,11 +431,10 @@ Buffer const * const LyXView::updateInset(InsetBase const * inset) const
|
||||
{
|
||||
Buffer const * buffer_ptr = 0;
|
||||
if (inset) {
|
||||
buffer_ptr = work_area_->bufferView().buffer();
|
||||
// No FitCursor:
|
||||
BOOST_ASSERT(work_area_);
|
||||
work_area_->bufferView().update(Update::Force);
|
||||
work_area_->redraw();
|
||||
work_area_->sheduleRedraw();
|
||||
|
||||
buffer_ptr = work_area_->bufferView().buffer();
|
||||
}
|
||||
return buffer_ptr;
|
||||
}
|
||||
|
@ -82,6 +82,9 @@ public:
|
||||
*/
|
||||
virtual void setScrollbarParams(int height, int pos, int line_height) = 0;
|
||||
|
||||
///
|
||||
virtual void sheduleRedraw() = 0;
|
||||
|
||||
/// redraw the screen, without using existing pixmap
|
||||
virtual void redraw();
|
||||
///
|
||||
|
@ -159,7 +159,7 @@ SyntheticMouseEvent::SyntheticMouseEvent()
|
||||
|
||||
|
||||
GuiWorkArea::GuiWorkArea(int w, int h, int id, LyXView & lyx_view)
|
||||
: WorkArea(id, lyx_view), need_resize_(false)
|
||||
: WorkArea(id, lyx_view), need_resize_(false), shedule_redraw_(false)
|
||||
{
|
||||
cursor_ = new frontend::CursorWidget();
|
||||
cursor_->hide();
|
||||
@ -535,6 +535,19 @@ void GuiWorkArea::updateScreen()
|
||||
|
||||
void GuiWorkArea::showCursor(int x, int y, int h, CursorShape shape)
|
||||
{
|
||||
if (shedule_redraw_) {
|
||||
if (buffer_view_ && buffer_view_->buffer()) {
|
||||
buffer_view_->update(Update::Force);
|
||||
updateScreen();
|
||||
viewport()->update(QRect(0, 0, viewport()->width(), viewport()->height()));
|
||||
}
|
||||
shedule_redraw_ = false;
|
||||
// Show the cursor immediately after the update.
|
||||
hideCursor();
|
||||
toggleCursor();
|
||||
return;
|
||||
}
|
||||
|
||||
cursor_->update(x, y, h, shape);
|
||||
cursor_->show();
|
||||
viewport()->update(cursor_->rect());
|
||||
|
@ -103,6 +103,8 @@ public:
|
||||
virtual int height() const { return viewport()->height(); }
|
||||
///
|
||||
virtual void setScrollbarParams(int height, int pos, int line_height);
|
||||
///
|
||||
virtual void sheduleRedraw() { shedule_redraw_ = true; }
|
||||
|
||||
/// update the passed area.
|
||||
void update(int x, int y, int w, int h);
|
||||
@ -171,6 +173,8 @@ private:
|
||||
QPixmap screen_;
|
||||
///
|
||||
bool need_resize_;
|
||||
///
|
||||
bool shedule_redraw_;
|
||||
};
|
||||
|
||||
} // namespace frontend
|
||||
|
Loading…
Reference in New Issue
Block a user