From a1a9c4c4ba5c246e34def3a5c51ced24ce18e66a Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Fri, 15 May 2009 21:51:43 +0000 Subject: [PATCH] Fix bug #5540: Crash in MathAtom on Undo. No undo steps are recorded for math-macros. Now, it is also not done when we resume to edit a macro. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29685 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/mathed/InsetMathNest.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index cff232b87c..12a0e2bcbf 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -816,8 +816,14 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & cmd) // InsetMathFrac -> a pos value > 0 is invalid. // A side effect is that an undo before the macro is finished // undoes the complete macro, not only the last character. - if (!cur.inMacroMode()) - cur.recordUndoSelection(); + if (!cur.inMacroMode()) { + MathMacro const * macro = 0; + if (cur.pos() > 0 && cmd.argument() != "\\") + macro = cur.inset().asInsetMath()->asMacro(); + + if (!macro) + cur.recordUndoSelection(); + } // spacial handling of space. If we insert an inset // via macro mode, we want to put the cursor inside it