From: Jean-Marc Lasgouttes Date: Thu, 28 Mar 2019 12:18:34 +0000 (+0100) Subject: Fix insertion of text characters in math X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=0141a0fab5e0418c35d4a8d0c77d871384bb1614;p=features.git Fix insertion of text characters in math Characters that needed to be inserted in text mode in mathed were not correctly inserted. Here we do two fixes: 1/ in niceInsert(), do not replace the contents of the active insets first cell with selection, insert selection instead. This wa sthe cause of the bug: an empty selection replaced the contents that was already in the cell. 2/ do not use niceInsert() anyway, insert() is perfect for what we want to do. Fixes bug #11527. --- diff --git a/src/Cursor.cpp b/src/Cursor.cpp index a6d799ec9c..56a9dd8722 100644 --- a/src/Cursor.cpp +++ b/src/Cursor.cpp @@ -1547,7 +1547,9 @@ void Cursor::niceInsert(MathAtom const & t) // If possible, enter the new inset and move the contents of the selection if (t->isActive()) { idx_type const idx = prevMath().asNestInset()->firstIdx(); - asArray(safe, prevMath().cell(idx)); + MathData ar(buffer()); + asArray(safe, ar); + prevMath().cell(idx).insert(0, ar); editInsertedInset(); } else if (t->asMacro() && !safe.empty()) { MathData ar(buffer()); diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index 8cd1254098..798ca8920b 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -1844,7 +1844,7 @@ bool InsetMathNest::interpretChar(Cursor & cur, char_type const c) if (currentMode() == InsetMath::MATH_MODE && Encodings::isUnicodeTextOnly(c)) { MathAtom at = createInsetMath("text", buf); at.nucleus()->cell(0).push_back(MathAtom(new InsetMathChar(c))); - cur.niceInsert(at); + cur.insert(at); cur.posForward(); return true; }