]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
* GuiView.cpp:
[lyx.git] / src / Text3.cpp
index fc06e9f876fe175925960b45e38b9f623fe7a990..3671170eaf1007af8930085bed4db8dd1d1e64d0 100644 (file)
@@ -208,7 +208,8 @@ static bool doInsertInset(Cursor & cur, Text * text,
 
        bool gotsel = false;
        if (cur.selection()) {
-               lyx::dispatch(FuncRequest(LFUN_CUT));
+               cutSelection(cur, false, pastesel);
+               cur.clearSelection();
                gotsel = true;
        }
        text->insertInset(cur, inset);
@@ -219,23 +220,27 @@ static bool doInsertInset(Cursor & cur, Text * text,
        if (!gotsel || !pastesel)
                return true;
 
-       lyx::dispatch(FuncRequest(LFUN_PASTE, "0"));
+       pasteFromStack(cur, cur.buffer().errorList("Paste"), 0);
+       cur.buffer().errors("Paste");
+       cur.clearSelection(); // bug 393
+       cur.finishUndo();
        InsetText * insetText = dynamic_cast<InsetText *>(inset);
        if (insetText && !insetText->allowMultiPar() || cur.lastpit() == 0) {
                // reset first par to default
                cur.text()->paragraphs().begin()
-                       ->setEmptyOrDefaultLayout(bparams.documentClass());
+                       ->setPlainOrDefaultLayout(bparams.documentClass());
                cur.pos() = 0;
                cur.pit() = 0;
                // Merge multiple paragraphs -- hack
                while (cur.lastpit() > 0)
                        mergeParagraph(bparams, cur.text()->paragraphs(), 0);
+               cur.leaveInset(*inset);
        } else {
+               cur.leaveInset(*inset);
                // reset surrounding par to default
-               docstring const layoutname = insetText->useEmptyLayout()
+               docstring const layoutname = insetText->usePlainLayout()
                        ? bparams.documentClass().emptyLayoutName()
                        : bparams.documentClass().defaultLayoutName();
-               cur.leaveInset(*inset);
                text->setLayout(cur, layoutname);
        }
 
@@ -1007,10 +1012,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                if (layout.empty())
                        layout = tclass.defaultLayoutName();
 
-               if (para.forceEmptyLayout()) 
+               if (para.forcePlainLayout()) 
                        // in this case only the empty layout is allowed
                        layout = tclass.emptyLayoutName();
-               else if (para.useEmptyLayout()) {
+               else if (para.usePlainLayout()) {
                        // in this case, default layout maps to empty layout 
                        if (layout == tclass.defaultLayoutName())
                                layout = tclass.emptyLayoutName();
@@ -1360,12 +1365,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_FLEX_INSERT:
        case LFUN_BOX_INSERT:
        case LFUN_BRANCH_INSERT:
-       case LFUN_BIBITEM_INSERT:
        case LFUN_ERT_INSERT:
        case LFUN_LISTING_INSERT:
        case LFUN_MARGINALNOTE_INSERT:
        case LFUN_OPTIONAL_INSERT:
-       case LFUN_ENVIRONMENT_INSERT:
        case LFUN_INDEX_INSERT:
                // Open the inset, and move the current selection
                // inside it.
@@ -1399,7 +1402,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                // add a separate paragraph for the caption inset
                pars.push_back(Paragraph());
                pars.back().setInsetOwner(pars[0].inInset());
-               pars.back().setEmptyOrDefaultLayout(tclass);
+               pars.back().setPlainOrDefaultLayout(tclass);
                int cap_pit = pars.size() - 1;
 
                // if an empty inset was created, we create an additional empty
@@ -1408,7 +1411,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                if (!content) {
                        pars.push_back(Paragraph());
                        pars.back().setInsetOwner(pars[0].inInset());
-                       pars.back().setEmptyOrDefaultLayout(tclass);
+                       pars.back().setPlainOrDefaultLayout(tclass);
                }
 
                // reposition the cursor to the caption
@@ -1691,7 +1694,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                breakParagraph(cur);
                        }
 
-                       docstring const laystr = cur.inset().useEmptyLayout() ?
+                       docstring const laystr = cur.inset().usePlainLayout() ?
                                tclass.emptyLayoutName() :
                                tclass.defaultLayoutName();
                        setLayout(cur, laystr);
@@ -1866,11 +1869,6 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                flag.setOnOff(cur.paragraph().params().startOfAppendix());
                break;
 
-       case LFUN_BIBITEM_INSERT:
-               enable = (cur.paragraph().layout().labeltype == LABEL_BIBLIO
-                         && cur.pos() == 0);
-               break;
-
        case LFUN_DIALOG_SHOW_NEW_INSET:
                if (cmd.argument() == "bibitem")
                        code = BIBITEM_CODE;
@@ -1981,9 +1979,6 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                enable = cur.paragraph().insetList().count(OPTARG_CODE)
                        < cur.paragraph().layout().optionalargs;
                break;
-       case LFUN_ENVIRONMENT_INSERT:
-               code = BOX_CODE;
-               break;
        case LFUN_INDEX_INSERT:
                code = INDEX_CODE;
                break;
@@ -2126,7 +2121,9 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_OUTLINE_DOWN:
        case LFUN_OUTLINE_IN:
        case LFUN_OUTLINE_OUT:
-               enable = (cur.paragraph().layout().toclevel != Layout::NOT_IN_TOC);
+               // FIXME: LyX is not ready for outlining within inset.
+               enable = isMainText(cur.bv().buffer())
+                       && cur.paragraph().layout().toclevel != Layout::NOT_IN_TOC;
                break;
 
        case LFUN_NEWLINE_INSERT: