From 78aa7c69879a001657838d54f8d149af6507978b Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 9 Nov 2006 14:56:57 +0000 Subject: [PATCH] Fix bugs 1720 (almost) and 2877 * src/funcrequest.h: split UI enum into MENU and TOOLBAR * src/lyxfunc.C (getStatus): disable menu entries that need a buffer when window does not have focus (bug 1720) (dispatch, sendDispatchMessage): properly redraw toolbar after each action (bug 2877). * src/frontends/Toolbars.C (layoutSelected): * src/MenuBackend.C (MenuItem): * src/ToolbarBackend.C (add): adapt to FuncRequest change. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15825 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/MenuBackend.C | 2 +- src/ToolbarBackend.C | 2 +- src/frontends/Toolbars.C | 2 +- src/funcrequest.h | 3 ++- src/lyxfunc.C | 20 +++++++------------- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/MenuBackend.C b/src/MenuBackend.C index 51b33c36ea..5e078de9db 100644 --- a/src/MenuBackend.C +++ b/src/MenuBackend.C @@ -107,7 +107,7 @@ MenuItem::MenuItem(Kind kind, docstring const & label, FuncRequest const & func, bool optional) : kind_(kind), label_(label), func_(func), optional_(optional) { - func_.origin = FuncRequest::UI; + func_.origin = FuncRequest::MENU; } diff --git a/src/ToolbarBackend.C b/src/ToolbarBackend.C index f2dd5d8a26..970829b1aa 100644 --- a/src/ToolbarBackend.C +++ b/src/ToolbarBackend.C @@ -212,7 +212,7 @@ void ToolbarBackend::add(Toolbar & tb, FuncRequest const & func, docstring const & tooltip) { tb.items.push_back(make_pair(func, tooltip)); - tb.items.back().first.origin = FuncRequest::UI; + tb.items.back().first.origin = FuncRequest::TOOLBAR; } diff --git a/src/frontends/Toolbars.C b/src/frontends/Toolbars.C index 6d644be4c3..71cd214891 100644 --- a/src/frontends/Toolbars.C +++ b/src/frontends/Toolbars.C @@ -333,7 +333,7 @@ void layoutSelected(LyXView & lv, string const & name) // Yes, the lyx::to_utf8(_()) is correct if (lyx::to_utf8(_(itname)) == name) { FuncRequest const func(LFUN_LAYOUT, itname, - FuncRequest::UI); + FuncRequest::TOOLBAR); lv.dispatch(func); return; } diff --git a/src/funcrequest.h b/src/funcrequest.h index ba1c343c4f..118e4f45bf 100644 --- a/src/funcrequest.h +++ b/src/funcrequest.h @@ -32,7 +32,8 @@ public: /// Where the request came from enum Origin { INTERNAL, - UI, // The menu or the toolbar + MENU, // A menu entry + TOOLBAR, // A toolbar icon KEYBOARD, // a keyboard binding COMMANDBUFFER }; diff --git a/src/lyxfunc.C b/src/lyxfunc.C index 2804687157..6f9d361354 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -377,7 +377,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const http://bugzilla.lyx.org/show_bug.cgi?id=1941#c4 */ Buffer * buf; - if (cmd.origin == FuncRequest::UI && !lyx_view_->hasFocus()) + if (cmd.origin == FuncRequest::MENU && !lyx_view_->hasFocus()) buf = 0; else buf = lyx_view_->buffer(); @@ -1737,26 +1737,20 @@ void LyXFunc::dispatch(FuncRequest const & cmd) } } } - if (!quitting) + if (!quitting) { + lyx_view_->updateMenubar(); + lyx_view_->updateToolbars(); // FIXME UNICODE: _() does not support anything but ascii. // Do we need a to_ascii() method? sendDispatchMessage(getMessage(), cmd); + } } void LyXFunc::sendDispatchMessage(docstring const & msg, FuncRequest const & cmd) { - /* When an action did not originate from the UI/kbd, it makes - * sense to avoid updating the GUI. It turns out that this - * fixes bug 1941, for reasons that are described here: - * http://bugzilla.lyx.org/show_bug.cgi?id=1941#c4 - */ - if (cmd.origin != FuncRequest::INTERNAL) { - lyx_view_->updateMenubar(); - lyx_view_->updateToolbars(); - } - - const bool verbose = (cmd.origin == FuncRequest::UI + const bool verbose = (cmd.origin == FuncRequest::MENU + || cmd.origin == FuncRequest::TOOLBAR || cmd.origin == FuncRequest::COMMANDBUFFER); if (cmd.action == LFUN_SELF_INSERT || !verbose) { -- 2.39.2