[LyX/master] Code factoring: introduce BufferView::busy()
Jean-Marc Lasgouttes
lasgouttes at lyx.org
Wed May 3 08:51:24 UTC 2023
commit 89db357cd616479eea8f99c632c2404f1734dacb
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date: Wed May 3 11:52:27 2023 +0200
Code factoring: introduce BufferView::busy()
The WorkArea should not have to look at details of the undo stack.
No change intended.
---
src/Buffer.cpp | 6 ++++++
src/Buffer.h | 2 ++
src/BufferView.cpp | 6 ++++++
src/BufferView.h | 2 ++
src/frontends/qt/GuiWorkArea.cpp | 9 +++------
5 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index a7f6588..e439242 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -802,6 +802,12 @@ Undo & Buffer::undo()
}
+Undo const & Buffer::undo() const
+{
+ return d->undo_;
+}
+
+
void Buffer::setChild(DocIterator const & dit, Buffer * child)
{
d->children_positions[child] = dit;
diff --git a/src/Buffer.h b/src/Buffer.h
index 8f4474d..67826a3 100644
--- a/src/Buffer.h
+++ b/src/Buffer.h
@@ -651,6 +651,8 @@ public:
///
Undo & undo();
+ ///
+ Undo const & undo() const;
/// This function is called when the buffer is changed.
void changed(bool update_metrics) const;
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index ae0c714..bf1eb7b 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -3527,6 +3527,12 @@ void BufferView::checkCursorScrollOffset()
}
+bool BufferView::busy() const
+{
+ return buffer().undo().activeUndoGroup();
+}
+
+
void BufferView::draw(frontend::Painter & pain, bool paint_caret)
{
if (height_ == 0 || width_ == 0)
diff --git a/src/BufferView.h b/src/BufferView.h
index 6cdc685..b64b431 100644
--- a/src/BufferView.h
+++ b/src/BufferView.h
@@ -339,6 +339,8 @@ public:
/// the shape of the caret
frontend::CaretGeometry const & caretGeometry() const;
+ /// Returns true when the BufferView is not ready for drawing
+ bool busy() const;
///
void draw(frontend::Painter & pain, bool paint_caret);
diff --git a/src/frontends/qt/GuiWorkArea.cpp b/src/frontends/qt/GuiWorkArea.cpp
index ae69332..1a3a9c0 100644
--- a/src/frontends/qt/GuiWorkArea.cpp
+++ b/src/frontends/qt/GuiWorkArea.cpp
@@ -39,7 +39,6 @@
#include "LyXVC.h"
#include "Text.h"
#include "TextMetrics.h"
-#include "Undo.h"
#include "version.h"
#include "support/convert.h"
@@ -311,8 +310,7 @@ void GuiWorkArea::startBlinkingCaret()
// Don't start blinking if the cursor isn't on screen, unless we
// are not ready to know whether the cursor is on screen.
- if (!d->buffer_view_->buffer().undo().activeUndoGroup()
- && !d->buffer_view_->caretInView())
+ if (!d->buffer_view_->busy() && !d->buffer_view_->caretInView())
return;
d->showCaret();
@@ -498,8 +496,7 @@ void GuiWorkArea::Private::updateCaretGeometry()
{
// we cannot update geometry if not ready and we do not need to if
// caret is not in view.
- if (buffer_view_->buffer().undo().activeUndoGroup()
- || !buffer_view_->caretInView())
+ if (buffer_view_->busy() || !buffer_view_->caretInView())
return;
@@ -1240,7 +1237,7 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
// Do not trigger the painting machinery if we are not ready (see
// bug #10989). The second test triggers when in the middle of a
// dispatch operation.
- if (view().busy() || d->buffer_view_->buffer().undo().activeUndoGroup()) {
+ if (view().busy() || d->buffer_view_->busy()) {
// Since the screen may have turned black at this point, our
// backing store has to be copied to screen. This is a no-op
// except when our drawing strategy is "backingstore" (macOS,
More information about the lyx-cvs
mailing list