]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
Paragraph::inInset() shall not be used if the owner inset was not initialized. Make...
[lyx.git] / src / Text3.cpp
index 14f03da35ef0d9200e1baabbd75dce739a2c9aca..009077c342ab9f9ed944e627df17c0483131dfac 100644 (file)
@@ -1112,9 +1112,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        else
                                c = par.getChar(pos - 1);
                        string arg = to_utf8(cmd.argument());
-                       cur.insert(new InsetQuotes(c, bufparams.quotes_language,
-                               (arg == "single") ? InsetQuotes::SingleQuotes
-                                       : InsetQuotes::DoubleQuotes));
+                       cur.insert(new InsetQuotes(bv->buffer(), c, (arg == "single")
+                               ? InsetQuotes::SingleQuotes : InsetQuotes::DoubleQuotes));
                        cur.posForward();
                }
                else
@@ -1160,6 +1159,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
                case mouse_button::button2:
                        // Middle mouse pasting.
+                       bv->mouseSetCursor(cur);
                        if (!cap::selection()) {                        
                                // There is no local selection in the current buffer, so try to
                                // paste primary selection instead.
@@ -1481,8 +1481,16 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        MacroType type = MacroTypeNewcommand;
                        if (s2 == "def")
                                type = MacroTypeDef;
-                       cur.insert(new MathMacroTemplate(from_utf8(token(s, ' ', 0)), nargs, false, type));
-                       //cur.nextInset()->edit(cur, true);
+                       MathMacroTemplate * inset = new MathMacroTemplate(from_utf8(token(s, ' ', 0)), nargs, false, type);
+                       inset->setBuffer(bv->buffer());
+                       insertInset(cur, inset);
+
+                       // enter macro inset and select the name
+                       cur.push(*inset);
+                       cur.top().pos() = cur.top().lastpos();
+                       cur.resetAnchor();
+                       cur.selection() = true;
+                       cur.top().pos() = 0;
                }
                break;
 
@@ -1498,6 +1506,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_MATH_MATRIX:
        case LFUN_MATH_DELIM:
        case LFUN_MATH_BIGDELIM: {
+               cur.recordUndo();
                cap::replaceSelection(cur);
                cur.insert(new InsetMathHull(hullSimple));
                checkAndActivateInset(cur, true);
@@ -1691,6 +1700,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                tclass.defaultLayoutName();
                        setLayout(cur, laystr);
                        ParagraphParameters p;
+                       // FIXME If this call were replaced with one to clearParagraphParams(),
+                       // then we could get rid of this method altogether.
                        setParagraphs(cur, p);
                        // FIXME This should be simplified when InsetFloatList takes a 
                        // Buffer in its constructor.