mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
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
This commit is contained in:
parent
a93279983d
commit
78aa7c6987
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user