]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
Allow MTag to take attributes.
[lyx.git] / src / BufferView.cpp
index bf2d220b56ff45b4de6049a13a1311757e653b53..e21eddffe62a5e4ef3cee109571a3a56c85de5a5 100644 (file)
@@ -1014,7 +1014,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
        case LFUN_SCREEN_SHOW_CURSOR:
        case LFUN_BIBTEX_DATABASE_ADD:
        case LFUN_BIBTEX_DATABASE_DEL:
-       case LFUN_NOTES_MUTATE:
        case LFUN_ALL_INSETS_TOGGLE:
        case LFUN_STATISTICS:
        case LFUN_BRANCH_ADD_INSERT:
@@ -1039,18 +1038,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                break;
        }
 
-       case LFUN_NEXT_INSET_MODIFY: {
-               // this is the real function we want to invoke
-               FuncRequest tmpcmd = cmd;
-               tmpcmd.action = LFUN_INSET_MODIFY;
-               // if there is an inset at cursor, see whether it
-               // handles the lfun, other start from scratch
-               Inset * inset = cur.nextInset();
-               if (!inset || !inset->getStatus(cur, tmpcmd, flag))
-                       flag = lyx::getStatus(tmpcmd);
-               break;
-       }
-
        case LFUN_LABEL_GOTO: {
                flag.setEnabled(!cmd.argument().empty()
                    || getInsetByCode<InsetRef>(cur, REF_CODE));
@@ -1630,31 +1617,6 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                break;
        }
 
-       case LFUN_NEXT_INSET_MODIFY: {
-               // create the the real function we want to invoke
-               FuncRequest tmpcmd = cmd;
-               tmpcmd.action = LFUN_INSET_MODIFY;
-               // if there is an inset at cursor, see whether it
-               // can be modified.
-               Inset * inset = cur.nextInset();
-               if (inset) {
-                       cur.recordUndo();
-                       inset->dispatch(cur, tmpcmd);
-               }
-               // if it did not work, try the underlying inset.
-               if (!inset || !cur.result().dispatched()) {
-                       cur.recordUndo();
-                       cur.dispatch(tmpcmd);
-               }
-
-               if (!cur.result().dispatched())
-                       // It did not work too; no action needed.
-                       break;
-               cur.clearSelection();
-               processUpdateFlags(Update::Force | Update::FitCursor);
-               break;
-       }
-
        case LFUN_SCREEN_UP:
        case LFUN_SCREEN_DOWN: {
                Point p = getPos(cur, cur.boundary());
@@ -1723,18 +1685,6 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                break;
        }
 
-       // This could be rewriten using some command like forall <insetname> <command>
-       // once the insets refactoring is done.
-       case LFUN_NOTES_MUTATE: {
-               if (cmd.argument().empty())
-                       break;
-
-               if (mutateNotes(cur, cmd.getArg(0), cmd.getArg(1))) {
-                       processUpdateFlags(Update::Force);
-               }
-               break;
-       }
-
 
        // This would be in Buffer class if only Cursor did not
        // require a bufferview
@@ -1744,9 +1694,10 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                FuncRequest const fr = lyxaction.lookupFunc(commandstr);
 
                // an arbitrary number to limit number of iterations
-               const int max_iter = 1000;
+               const int max_iter = 10000;
                int iterations = 0;
                Cursor & cur = d->cursor_;
+               Cursor const savecur = cur;
                cur.reset();
                if (!cur.nextInset())
                        cur.forwardInset();
@@ -1771,7 +1722,8 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                        cur.forwardInset();
                }
                cur.endUndoGroup();
-               cur.reset();
+               cur = savecur;
+               cur.fixIfBroken();
                processUpdateFlags(Update::Force);
 
                if (iterations >= max_iter)