#include "frontends/Dialogs.h"
#include "frontends/LyXView.h"
#include "frontends/Painter.h"
+#include "frontends/nullpainter.h"
#include <sstream>
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())
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: "
// do superscript if LyX handles
// deadkeys
recordUndo(cur, Undo::ATOMIC);
+ safe_ = grabAndEraseSelection(cur);
script(cur, true);
}
break;
// math-insert only handles special math things like "matrix".
case LFUN_INSERT_MATH: {
recordUndo(cur, Undo::ATOMIC);
- MathArray ar;
- asArray(cmd.argument, ar);
- 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);
+ if (cmd.argument == "^" || cmd.argument == "_") {
+ interpret(cur, cmd.argument[0]);
} else
cur.niceInsert(cmd.argument);
break;
bool MathNestInset::interpret(LCursor & cur, char c)
{
//lyxerr << "interpret 2: '" << c << "'" << endl;
+ if (c == '^' || c == '_')
+ safe_ = grabAndEraseSelection(cur);
+
cur.clearTargetX();
// handle macroMode
}
cur.macroModeClose();
- string safe = grabAndEraseSelection(cur);
if (asScriptInset() && cur.idx() == 0) {
// we are in a nucleus of a script inset, move to _our_ script
MathScriptInset * inset = asScriptInset();
cur.idx() = 1;
cur.pos() = 0;
}
- //lyxerr << "pasting 1: safe:\n" << safe << endl;
- cur.paste(safe);
+ //lyxerr << "inserting 1: safe:\n" << safe_ << endl;
+ cur.niceInsert(safe_);
cur.resetAnchor();
- //lyxerr << "pasting 2: safe:\n" << safe << endl;
+ //lyxerr << "inserting 2: safe:\n" << safe_ << endl;
return true;
}