]> git.lyx.org Git - lyx.git/blobdiff - src/Cursor.cpp
* src/LyXRC.{cpp,h}:
[lyx.git] / src / Cursor.cpp
index 54a3b8bb7e43974900ba6d97e4534f0ee276de57..ac230a15e003cb2ca9ad18163e97f0e583bbce02 100644 (file)
 #include "insets/InsetTabular.h"
 #include "insets/InsetText.h"
 
-#include "mathed/MathData.h"
 #include "mathed/InsetMath.h"
 #include "mathed/InsetMathScript.h"
 #include "mathed/MacroTable.h"
+#include "mathed/MathData.h"
+#include "mathed/MathMacro.h"
 
 #include <boost/assert.hpp>
 #include <boost/bind.hpp>
@@ -674,7 +675,7 @@ bool Cursor::openable(MathAtom const & t) const
        // we can't move into anything new during selection
        if (depth() >= anchor_.depth())
                return false;
-       if (!ptr_cmp(t.nucleus(), &anchor_[depth()].inset()))
+       if (t.nucleus() != &anchor_[depth()].inset())
                return false;
 
        return true;
@@ -943,7 +944,13 @@ bool Cursor::macroModeClose()
        InsetMathNest * const in = inset().asInsetMath()->asNestInset();
        if (in && in->interpretString(*this, s))
                return true;
-       plainInsert(createInsetMath(name));
+       MathAtom atom = createInsetMath(name);
+       MathMacro * atomAsMacro = atom.nucleus()->asMacro();
+       if (atomAsMacro) {
+               // make non-greedy, i.e. don't eat parameters from the right
+               atomAsMacro->setDisplayMode(MathMacro::DISPLAY_NONGREEDY_INIT);
+       }
+       plainInsert(atom);
        return true;
 }