diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index c66a3857f9..413d32efde 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -1862,7 +1862,8 @@ bool InsetMathNest::cursorMathForward(Cursor & cur) if (cur.pos() != cur.lastpos() && cur.openable(cur.nextAtom())) { cur.pushBackward(*cur.nextAtom().nucleus()); cur.inset().idxFirst(cur); - if (cur.inset().asInsetMath()->asMacro()) + MathMacro const * macro = cur.inset().asInsetMath()->asMacro(); + if (macro && macro->displayMode() == MathMacro::DISPLAY_UNFOLDED) // editing macros is only possible at lastpos cur.pos() = cur.lastpos(); return true; @@ -1888,9 +1889,11 @@ bool InsetMathNest::cursorMathBackward(Cursor & cur) } MathMacro const * macro = cur.inset().asInsetMath()->asMacro(); int s = cur.depth() - 2; - if (macro && s >= 0 && cur[s].inset().asInsetMath()) + if (macro && macro->displayMode() == MathMacro::DISPLAY_UNFOLDED + && s >= 0 && cur[s].inset().asInsetMath()) // editing macros is only possible at lastpos return cur.popBackward(); + if (cur.posBackward() || idxBackward(cur)) return true; // try to pop backwards --- but don't pop out of math! leave that to