From b45a957929a78cefc729a0fa984214eb83357d42 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 25 Apr 2024 14:28:10 +0200 Subject: [PATCH] Set buffer_ correctly when inseting a math macro over a selection The code that handles this special macro insertion (in Cursor::mathMacroClose())) is very weird: it inserts the contents of the macro _after_ the macro and later, since the macro is 'greedy', it will eat this contents and put it in its first macro cell. Does it make sense to you? It does not ake sense to me either. Anyway, this is the point where one should make sure that the buffer is set. Fixes ticket #12682. --- src/mathed/InsetMathMacro.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mathed/InsetMathMacro.cpp b/src/mathed/InsetMathMacro.cpp index 9d67c78077..03794c6632 100644 --- a/src/mathed/InsetMathMacro.cpp +++ b/src/mathed/InsetMathMacro.cpp @@ -1080,6 +1080,8 @@ void InsetMathMacro::attachArguments(vector const & args, size_t arity { LASSERT(d->displayMode_ == DISPLAY_NORMAL, return); cells_ = args; + for (auto & cell : cells_) + cell.setBuffer(*buffer_); d->attachedArgsNum_ = args.size(); cells_.resize(arity, MathData(buffer_)); d->expanded_ = MathData(buffer_);