]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_nestinset.C
Fix to bug 2362: Deleting superscript also deletes subscript.
[lyx.git] / src / mathed / math_nestinset.C
index e5b88bab5e2b61266bb6a5b412391100277d32cb..0732cd20a1499da363655056a28a09263ceb8328 100644 (file)
@@ -51,6 +51,7 @@
 #include "frontends/Dialogs.h"
 #include "frontends/LyXView.h"
 #include "frontends/Painter.h"
+#include "frontends/nullpainter.h"
 
 #include <sstream>
 
@@ -219,9 +220,6 @@ void MathNestInset::draw(PainterInfo & pi, int x, int y) const
 
 void MathNestInset::drawSelection(PainterInfo & pi, int x, int y) const
 {
-       // FIXME: hack to get position cache warm
-       draw(pi, x, y);
-
        // this should use the x/y values given, not the cached values
        LCursor & cur = pi.base.bv->cursor();
        if (!cur.selection())
@@ -229,6 +227,12 @@ void MathNestInset::drawSelection(PainterInfo & pi, int x, int y) const
        if (!ptr_cmp(&cur.inset(), this))
                return;
 
+       // FIXME: hack to get position cache warm
+       static NullPainter nop;
+       PainterInfo pinop(pi);
+       pinop.pain = nop;
+       draw(pinop, x, y);
+
        CursorSlice s1 = cur.selBegin();
        CursorSlice s2 = cur.selEnd();
        //lyxerr << "MathNestInset::drawing selection: "
@@ -884,13 +888,7 @@ void MathNestInset::doDispatch(LCursor & cur, FuncRequest & cmd)
                int cell(0);
                if (cmd.argument == "\\root")
                        cell = 1;
-               // math macros are nest insets and may have 0 cells.
-               // handleNest would crash in this case.
-               if (ar.size() == 1 && (ar[0].nucleus()->asNestInset()) &&
-                   ar[0].nucleus()->nargs() > MathInset::idx_type(cell)) {
-                       cur.handleNest(ar[0], cell);
-               } else
-                       cur.niceInsert(cmd.argument);
+               cur.niceInsert(cmd.argument);
                break;
                }