commit 1befe82fafc10a2e4aec658677808d23eea3bd9b
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Sat Feb 8 21:09:23 2025 +0100
Avoid unnecessary creation of a row around caret position.
When trying to see whether the caret has affected a row, do not create
this row (with redoParagraph) if it did not exist.
(cherry picked from commit 8cfe8d1855250086a50d874072d3629c6016f8cb)
---
src/BufferView.cpp | 20 ++++++++++++--------
status.24x | 3 ++-
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 8194271d29..ac569a672c 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -3822,22 +3822,26 @@ void BufferView::draw(frontend::Painter & pain, bool
paint_caret)
}
// If a caret has to be painted, mark its text row as dirty to
- //make sure that it will be repainted on next redraw.
+ // make sure that it will be repainted on next redraw.
/* FIXME: investigate whether this can be avoided when the cursor did
not
* move at all
*/
if (paint_caret) {
Cursor cur(d->cursor_);
while (cur.depth() > 1) {
- if (!cur.inTexted())
- break;
- TextMetrics const & tm = textMetrics(cur.text());
- if (d->caret_geometry_.left >= tm.origin().x_
- && d->caret_geometry_.right <= tm.origin().x_ +
tm.dim().width())
- break;
+ if (cur.inTexted()) {
+ TextMetrics const & tm =
textMetrics(cur.text());
+ if (d->caret_geometry_.left >= tm.origin().x_
+ && d->caret_geometry_.right <=
tm.origin().x_ + tm.dim().width())
+ break;
+ }
cur.pop();
}
- cur.textRow().changed(true);
+ TextMetrics const & tm = textMetrics(cur.text());
+ if (tm.contains(cur.pit())) {
+ ParagraphMetrics const & pm = tm.parMetrics(cur.pit());
+ pm.getRow(cur.pos(), cur.boundary()).changed(true);
+ }
}
}
diff --git a/status.24x b/status.24x
index cc1119dfc3..e6dad8ef83 100644
--- a/status.24x
+++ b/status.24x
@@ -80,9 +80,10 @@ What's new
- Fix crash in batch LyX when ui_style is set (bug 13141).
-
- Rebuild toolbars on runtime mode switch on Linux.
+- Fix an assertion when image previews are loaded.
+
* INTERNALS
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs