]> git.lyx.org Git - lyx.git/blobdiff - src/LyXFunc.cpp
simplification
[lyx.git] / src / LyXFunc.cpp
index ee89ed58a651fb9c8bb8b831d72849e60e77a660..7fc98ff30bc0317c6318ef8d59da0f8ee0a88423 100644 (file)
@@ -185,7 +185,7 @@ bool import(LyXView * lv, FileName const & filename,
                }
                updateLabels(*buf);
                lv->setBuffer(buf);
-               lv->errors("Parse");
+               buf->errors("Parse");
        } else {
                Buffer * const b = newFile(lyxfile.absFilename(), string(), true);
                if (b)
@@ -539,6 +539,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
        case LFUN_DIALOG_SHOW:
        case LFUN_DIALOG_UPDATE:
        case LFUN_TOOLBAR_TOGGLE:
+       case LFUN_INSET_APPLY:
                if (lyx_view_)
                        return lyx_view_->getStatus(cmd);
                enable = false;
@@ -586,29 +587,6 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                        && (!buf->isClean() || buf->isExternallyModified(Buffer::timestamp_method));
                break;
 
-       case LFUN_INSET_APPLY: {
-               if (!view()) {
-                       enable = false;
-                       break;
-               }
-               string const name = cmd.getArg(0);
-               Inset * inset = lyx_view_->getOpenInset(name);
-               if (inset) {
-                       FuncRequest fr(LFUN_INSET_MODIFY, cmd.argument());
-                       FuncStatus fs;
-                       if (!inset->getStatus(view()->cursor(), fr, fs)) {
-                               // Every inset is supposed to handle this
-                               BOOST_ASSERT(false);
-                       }
-                       flag |= fs;
-               } else {
-                       FuncRequest fr(LFUN_INSET_INSERT, cmd.argument());
-                       flag |= getStatus(fr);
-               }
-               enable = flag.enabled();
-               break;
-       }
-
        case LFUN_CITATION_INSERT: {
                FuncRequest fr(LFUN_INSET_INSERT, "citation");
                enable = getStatus(fr).enabled();
@@ -867,6 +845,9 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
        } else {
                switch (action) {
                // Let lyx_view_ dispatch its own actions.
+               case LFUN_BUFFER_SWITCH:
+               case LFUN_BUFFER_NEXT:
+               case LFUN_BUFFER_PREVIOUS:
                case LFUN_COMMAND_EXECUTE:
                case LFUN_DROP_LAYOUTS_CHOICE:
                case LFUN_MENU_OPEN:
@@ -876,8 +857,11 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_DIALOG_DISCONNECT_INSET:
                case LFUN_DIALOG_HIDE:
                case LFUN_DIALOG_SHOW:
+               case LFUN_INSET_APPLY:
                        BOOST_ASSERT(lyx_view_);
                        lyx_view_->dispatch(cmd);
+                       if (lyx_view_->view())
+                               updateFlags = lyx_view_->view()->cursor().result().update();
                        break;
 
                case LFUN_WORD_FIND_FORWARD:
@@ -1234,7 +1218,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        if (buf) {
                                updateLabels(*buf);
                                lyx_view_->setBuffer(buf);
-                               lyx_view_->errors("Parse");
+                               buf->errors("Parse");
                        }
                        updateFlags = Update::None;
                        break;
@@ -1287,23 +1271,6 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        break;
 
                // --- buffers ----------------------------------------
-               case LFUN_BUFFER_SWITCH:
-                       BOOST_ASSERT(lyx_view_);
-                       lyx_view_->setBuffer(theBufferList().getBuffer(argument));
-                       updateFlags = Update::None;
-                       break;
-
-               case LFUN_BUFFER_NEXT:
-                       BOOST_ASSERT(lyx_view_);
-                       lyx_view_->setBuffer(theBufferList().next(lyx_view_->buffer()));
-                       updateFlags = Update::None;
-                       break;
-
-               case LFUN_BUFFER_PREVIOUS:
-                       BOOST_ASSERT(lyx_view_);
-                       lyx_view_->setBuffer(theBufferList().previous(lyx_view_->buffer()));
-                       updateFlags = Update::None;
-                       break;
 
                case LFUN_FILE_NEW: {
                        BOOST_ASSERT(lyx_view_);
@@ -1369,7 +1336,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        lyx_view_->setBuffer(buf);
                        view()->setCursorFromRow(row);
                        if (loaded)
-                               lyx_view_->errors("Parse");
+                               buf->errors("Parse");
                        updateFlags = Update::FitCursor;
                        break;
                }
@@ -1520,7 +1487,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                updateLabels(*child->masterBuffer());
                                lyx_view_->setBuffer(child);
                                if (parsed)
-                                       lyx_view_->errors("Parse");
+                                       child->errors("Parse");
                        }
 
                        // If a screen update is required (in case where auto_open is false), 
@@ -1672,23 +1639,6 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        break;
                }
 
-               case LFUN_INSET_APPLY: {
-                       BOOST_ASSERT(lyx_view_);
-                       string const name = cmd.getArg(0);
-                       Inset * inset = lyx_view_->getOpenInset(name);
-                       if (inset) {
-                               FuncRequest fr(LFUN_INSET_MODIFY, argument);
-                               inset->dispatch(view()->cursor(), fr);
-                       } else {
-                               FuncRequest fr(LFUN_INSET_INSERT, argument);
-                               dispatch(fr);
-                       }
-                       // ideally, the update flag should be set by the insets,
-                       // but this is not possible currently
-                       updateFlags = Update::Force | Update::FitCursor;
-                       break;
-               }
-
                case LFUN_ALL_INSETS_TOGGLE: {
                        BOOST_ASSERT(lyx_view_);
                        string action;
@@ -1890,7 +1840,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                }
 
                case LFUN_WINDOW_NEW:
-                       LyX::ref().newLyXView();
+                       theApp()->createView();
                        break;
 
                case LFUN_WINDOW_CLOSE:
@@ -2138,7 +2088,7 @@ void LyXFunc::open(string const & fname)
        if (buf) {
                updateLabels(*buf);
                lyx_view_->setBuffer(buf);
-               lyx_view_->errors("Parse");
+               buf->errors("Parse");
                str2 = bformat(_("Document %1$s opened."), disp_fn);
        } else {
                str2 = bformat(_("Could not open document %1$s"), disp_fn);
@@ -2253,7 +2203,7 @@ void LyXFunc::reloadBuffer()
        if (buf) {
                updateLabels(*buf);
                lyx_view_->setBuffer(buf);
-               lyx_view_->errors("Parse");
+               buf->errors("Parse");
                str = bformat(_("Document %1$s reloaded."), disp_fn);
        } else {
                str = bformat(_("Could not reload document %1$s"), disp_fn);