[LyX/master] Fix caret height when inserting new inset
Jean-Marc Lasgouttes
lasgouttes at lyx.org
Sun Feb 14 21:00:49 UTC 2021
commit 5a58ca6576a1fa2d6bea8e9e7927d5779943e593
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date: Sun Feb 14 21:34:43 2021 +0100
Fix caret height when inserting new inset
For now, the simplest thing to do it to compute metrics in all cases
before calling setCurrentFont().
In 2.5, a better approach will be to add a new virtual function
InsetText::setFont that will set correctly TextMetrics::font_ (a cache
of the reference font).
Fixes bug #12126.
---
src/Text3.cpp | 15 ++++++---------
1 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 07df90e..9b66997 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -2082,15 +2082,12 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
// inside it.
doInsertInset(cur, this, cmd, true, true);
cur.posForward();
- if (act == LFUN_SCRIPT_INSERT) {
- /* Script insets change the font style in metrics(), and
- * this is used to compute the height of the caret
- * (because the font is stored in TextMetrics::font_).
- * When we insert, we have to make sure that metrics are
- * computed so that the caret height is wrong. Arguably,
- * this is hackish.*/
- bv->processUpdateFlags(Update::SinglePar);
- }
+ /* The font of the inset is computed in metrics(), and this is
+ * used to compute the height of the caret (because the font
+ * is stored in TextMetrics::font_). When we insert, we have
+ * to make sure that metrics are computed so that the caret
+ * height is correct. Arguably, this is hackish.*/
+ bv->processUpdateFlags(Update::SinglePar);
cur.setCurrentFont();
// Some insets are numbered, others are shown in the outline pane so
// let's update the labels and the toc backend.
More information about the lyx-cvs
mailing list