From 125a297778f0fd0c18e7e0e7ad8c14f7001a74b7 Mon Sep 17 00:00:00 2001 From: Guillaume Munch Date: Sun, 23 Aug 2015 11:47:37 +0200 Subject: [PATCH] Fix bug #6466 \{ and \% now correctly use the selection as their argument instead of erasing it. --- src/mathed/InsetMathComment.cpp | 7 +++++++ src/mathed/InsetMathComment.h | 2 ++ src/mathed/InsetMathNest.cpp | 15 ++++++++++----- 3 files changed, 19 insertions(+), 5 deletions(-) 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));