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));

Reply via email to