From 5a58ca6576a1fa2d6bea8e9e7927d5779943e593 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Sun, 14 Feb 2021 21:34:43 +0100 Subject: [PATCH] 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 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Text3.cpp b/src/Text3.cpp index 07df90ee16..9b66997397 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. -- 2.39.5