From b5d3d3b722e81d6ab6f2b2ca7061654cda81d287 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 22 May 2008 15:01:36 +0000 Subject: [PATCH] * frontends/LyXView.h: * 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 | 37 ++++++++++------------------------- src/frontends/LyXView.h | 2 +- src/frontends/qt4/GuiView.cpp | 16 ++++----------- src/frontends/qt4/GuiView.h | 2 +- 4 files changed, 16 insertions(+), 41 deletions(-) diff --git a/src/LyXFunc.cpp b/src/LyXFunc.cpp index 9003d95723..8162e0b169 100644 --- a/src/LyXFunc.cpp +++ b/src/LyXFunc.cpp @@ -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; diff --git a/src/frontends/LyXView.h b/src/frontends/LyXView.h index c587ce1dbb..c40b181986 100644 --- a/src/frontends/LyXView.h +++ b/src/frontends/LyXView.h @@ -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; diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp index 62207b7c8a..a3782948bf 100644 --- a/src/frontends/qt4/GuiView.cpp +++ b/src/frontends/qt4/GuiView.cpp @@ -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; } diff --git a/src/frontends/qt4/GuiView.h b/src/frontends/qt4/GuiView.h index 7400c27e0c..7f5b14b93e 100644 --- a/src/frontends/qt4/GuiView.h +++ b/src/frontends/qt4/GuiView.h @@ -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); ///