diff --git a/src/mathed/InsetMathComment.cpp b/src/mathed/InsetMathComment.cpp index 096cf38752..ff91991aa8 100644 --- a/src/mathed/InsetMathComment.cpp +++ b/src/mathed/InsetMathComment.cpp @@ -26,6 +26,13 @@ InsetMathComment::InsetMathComment(Buffer * buf) {} +InsetMathComment::InsetMathComment(MathData const & ar) + : InsetMathNest(const_cast(ar.buffer()), 1) +{ + cell(0) = ar; +} + + InsetMathComment::InsetMathComment(Buffer * buf, docstring const & str) : InsetMathNest(buf, 1) { diff --git a/src/mathed/InsetMathComment.h b/src/mathed/InsetMathComment.h index fa33c63091..8cfe1368d7 100644 --- a/src/mathed/InsetMathComment.h +++ b/src/mathed/InsetMathComment.h @@ -25,6 +25,8 @@ public: /// InsetMathComment(Buffer * buf); /// + InsetMathComment(MathData const & ar); + /// explicit InsetMathComment(Buffer * buf, docstring const &); /// void metrics(MetricsInfo & mi, Dimension & dim) const; diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index 6382f1cf84..9081021c5d 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -1657,12 +1657,17 @@ bool InsetMathNest::interpretChar(Cursor & cur, char_type const c) } else if (c == '^' && currentMode() == InsetMath::MATH_MODE) { cur.backspace(); cur.niceInsert(createInsetMath("mathcircumflex", buf)); - } else if (c == '{') { + } else if (c == '{' || c == '%') { + //using the saved selection as argument + InsetMathUnknown * p = cur.activeMacro(); + p->finalize(); + MathData sel(cur.buffer()); + asArray(p->selection(), sel); cur.backspace(); - cur.niceInsert(MathAtom(new InsetMathBrace(buf))); - } else if (c == '%') { - cur.backspace(); - cur.niceInsert(MathAtom(new InsetMathComment(buf))); + if (c == '{') + cur.niceInsert(MathAtom(new InsetMathBrace(sel))); + else + cur.niceInsert(MathAtom(new InsetMathComment(sel))); } else if (c == '#') { LASSERT(cur.activeMacro(), return false); cur.activeMacro()->setName(name + docstring(1, c));