void Cursor::niceInsert(docstring const & t, Parse::flags f)
{
- MathData ar;
+ MathData ar(buffer());
asArray(t, ar, f);
if (ar.size() == 1)
niceInsert(ar[0]);
// push the clone, not the original
pushBackward(*nextInset());
// We may not use niceInsert here (recursion)
- MathData ar;
+ MathData ar(buffer());
asArray(safe, ar);
insert(ar);
}
return false;
InsetMathUnknown * p = activeMacro();
p->finalize();
- MathData selection;
+ MathData selection(buffer());
asArray(p->selection(), selection);
docstring const s = p->name();
--pos();
}
top().pos() = min(tm.x2pos(pit(), next_row, xo), top().lastpos());
- boundary(tm.x2pos(pit(), next_row, xo)
- == tm.x2pos(pit(), next_row, tm.width()));
+ int const xpos = tm.x2pos(pit(), next_row, xo);
+ bool const at_end_row = xpos == tm.x2pos(pit(), next_row, tm.width());
+ bool const at_beg_row = xpos == tm.x2pos(pit(), next_row, 0);
+
+ if (at_end_row && at_beg_row)
+ // make sure the cursor ends up on this row
+ boundary(false);
+ else
+ boundary(at_end_row);
+
updateNeeded |= bv().checkDepm(*this, old);
}