]> git.lyx.org Git - features.git/commitdiff
* frontends/LyXView.h:
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 22 May 2008 15:01:36 +0000 (15:01 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 22 May 2008 15:01:36 +0000 (15:01 +0000)
* frontends/qt4/GuiView.h:
* frontends/qt4/GuiView.cpp (getStatus): change signature to return a
bool indicating whether the view knows something about the lfun.

* LyXFunc.cpp (getStatus): remove knowledge about what lfuns are
handled in view. Call LyXView::getStatus() when nothing is known at
LyXFunc level.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24887 a592a061-630c-0410-9148-cb99ea01b6c8

src/LyXFunc.cpp
src/frontends/LyXView.h
src/frontends/qt4/GuiView.cpp
src/frontends/qt4/GuiView.h

index 9003d95723c639bf8e7b3983c64292b7bbc7ae3a..8162e0b1691e216faf7d0cb1c03d9251637010c7 100644 (file)
@@ -440,19 +440,6 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                enable = false;
                break;
 
-       // FIXME: these cases should be hidden in GuiView::getStatus().
-       case LFUN_DIALOG_TOGGLE:
-       case LFUN_DIALOG_SHOW:
-       case LFUN_UI_TOGGLE:
-       case LFUN_DIALOG_UPDATE:
-               // FIXME: add special handling for about and prefs dialogs here
-               // which do not depend on GuiView.
-               if (lyx_view_)
-                       return lyx_view_->getStatus(cmd);
-               else
-                       enable = false;
-               break;
-
        // FIXME optimally this should be in Text::getStatus. In such a case the flags
        // are not passed when using context menu. This way it works.
        case LFUN_SET_GRAPHICS_GROUP: {
@@ -467,20 +454,6 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                break;
        }
 
-       case LFUN_TOOLBAR_TOGGLE:
-       case LFUN_INSET_APPLY:
-       case LFUN_BUFFER_WRITE:
-       case LFUN_BUFFER_WRITE_AS:
-       case LFUN_SPLIT_VIEW:
-       case LFUN_CLOSE_TAB_GROUP:
-       case LFUN_COMPLETION_POPUP:
-       case LFUN_COMPLETION_INLINE:
-       case LFUN_COMPLETION_COMPLETE:
-               if (lyx_view_)
-                       return lyx_view_->getStatus(cmd);
-               enable = false;
-               break;
-
        case LFUN_BUFFER_TOGGLE_READ_ONLY:
                flag.setOnOff(buf->isReadonly());
                break;
@@ -653,6 +626,16 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                break;
 
        default:
+               // Does the view know something?
+               if (!lyx_view_) {
+                       enable = false;
+                       break;
+               }
+               if (lyx_view_->getStatus(cmd, flag))
+                       break;
+
+               // If we have a BufferView, try cursor position and
+               // then the BufferView.
                if (!view()) {
                        enable = false;
                        break;
index c587ce1dbb43c1c5e662a067fb641f6ac8d9aed0..c40b1819869eaf6a3ac324fdf4096ebee23f5f6f 100644 (file)
@@ -82,7 +82,7 @@ public:
        virtual void message(docstring const &) = 0;
 
        ///
-       virtual FuncStatus getStatus(FuncRequest const & cmd) = 0;
+       virtual bool getStatus(FuncRequest const & cmd, FuncStatus & flag) = 0;
        /// dispatch command.
        /// \return true if the \c FuncRequest has been dispatched.
        virtual bool dispatch(FuncRequest const & cmd) = 0;
index 62207b7c8a9bdd5fd9cc4c20fa8cff554dd2674a..a3782948bf923563f239e97ee3d92711eb835a47 100644 (file)
@@ -985,9 +985,8 @@ void GuiView::resetAutosaveTimers()
 }
 
 
-FuncStatus GuiView::getStatus(FuncRequest const & cmd)
+bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 {
-       FuncStatus flag;
        bool enable = true;
        Buffer * buf = buffer();
 
@@ -1077,10 +1076,6 @@ FuncStatus GuiView::getStatus(FuncRequest const & cmd)
        }
 
        case LFUN_INSET_APPLY: {
-               if (!buf) {
-                       enable = false;
-                       break;
-               }
                string const name = cmd.getArg(0);
                Inset * inset = getOpenInset(name);
                if (inset) {
@@ -1093,7 +1088,7 @@ FuncStatus GuiView::getStatus(FuncRequest const & cmd)
                        flag |= fs;
                } else {
                        FuncRequest fr(LFUN_INSET_INSERT, cmd.argument());
-                       flag |= getStatus(fr);
+                       flag |= lyx::getStatus(fr);
                }
                enable = flag.enabled();
                break;
@@ -1118,16 +1113,13 @@ FuncStatus GuiView::getStatus(FuncRequest const & cmd)
                break;
 
        default:
-               if (!view()) {
-                       enable = false;
-                       break;
-               }
+               return false;
        }
 
        if (!enable)
                flag.enabled(false);
 
-       return flag;
+       return true;
 }
 
 
index 7400c27e0cd637cc08af65b952157fbcaed10136..7f5b14b93ed4a63695e98aeb26d1c2417d9ce79c 100644 (file)
@@ -78,7 +78,7 @@ public:
        void updateLayoutList();
        void updateToolbars();
        QMenu * createPopupMenu();
-       FuncStatus getStatus(FuncRequest const & cmd);
+       bool getStatus(FuncRequest const & cmd, FuncStatus & flag);
        bool dispatch(FuncRequest const & cmd);
 
        ///