commit 125a297778f0fd0c18e7e0e7ad8c14f7001a74b7
Author: Guillaume Munch <[email protected]>
Date: Sun Aug 23 11:47:37 2015 +0200
Fix bug #6466
\{ and \% now correctly use the selection as their argument instead of
erasing it.
diff --git a/src/mathed/InsetMathComment.cpp b/src/mathed/InsetMathComment.cpp
index 096cf38..ff91991 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<Buffer *>(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 fa33c63..8cfe136 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 6382f1c..9081021 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 == '{') {
- cur.backspace();
- cur.niceInsert(MathAtom(new
InsetMathBrace(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
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));