flag.message(from_utf8(N_("Exiting")));
flag.enabled(true);
return flag;
+ } else if (cmd.action == LFUN_BOOKMARK_GOTO) {
+ // bookmarks can be valid even if there is no opened buffer
+ flag.enabled(LyX::ref().session().bookmarks().isValid(convert<unsigned int>(to_utf8(cmd.argument()))));
+ return flag;
+ } else if (cmd.action == LFUN_BOOKMARK_CLEAR) {
+ flag.enabled(LyX::ref().session().bookmarks().size() > 0);
+ return flag;
+ } else if (cmd.action == LFUN_TOOLBAR_TOGGLE_STATE) {
+ ToolbarBackend::Flags flags = lyx_view_->getToolbarState(to_utf8(cmd.argument()));
+ if (!(flags & ToolbarBackend::AUTO))
+ flag.setOnOff(flags & ToolbarBackend::ON);
+ return flag;
}
LCursor & cur = view()->cursor();
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();
break;
}
+
// this one is difficult to get right. As a half-baked
// solution, we consider only the first action of the sequence
case LFUN_COMMAND_SEQUENCE: {
// these are handled in our dispatch()
break;
- // FIXME: will move to the front of this function when SWITCH_TO_BUFFER
- // is valid for a newly created window
- case LFUN_BOOKMARK_GOTO:
- // bookmarks can be valid even if there is no opened buffer
- flag.enabled(LyX::ref().session().bookmarks().isValid(convert<unsigned int>(to_utf8(cmd.argument()))));
- break;
-
- // FIXME: will move to the front of this function when SWITCH_TO_BUFFER
- // is valid for a newly created window
- case LFUN_BOOKMARK_CLEAR:
- flag.enabled(LyX::ref().session().bookmarks().size() > 0);
- break;
-
default:
if (!getLocalStatus(cur, cmd, flag))
flag = view()->getStatus(cmd);
name == "bibtex" ||
name == "index" ||
name == "label" ||
+ name == "nomenclature" ||
name == "ref" ||
name == "toc" ||
name == "url") {
// open may fail, so we need to test it again
if (theBufferList().exists(bm.filename)) {
// if the current buffer is not that one, switch to it.
- // FIXME: swtich buffer to a newly created window will crash lyx
- // because of invalid view.
if (lyx_view_->buffer()->fileName() != bm.filename)
dispatch(FuncRequest(LFUN_BUFFER_SWITCH, bm.filename));
// BOOST_ASSERT(lyx_view_->buffer()->fileName() != bm.filename);
LyX::ref().session().bookmarks().clear();
break;
+ case LFUN_TOOLBAR_TOGGLE_STATE:
+ lyx_view_->toggleToolbarState(argument);
+ break;
+
default: {
BOOST_ASSERT(lyx_view_);
view()->cursor().dispatch(cmd);
needSecondUpdate = view()->fitCursor();
if (needSecondUpdate || updateFlags != Update::None) {
- view()->buffer()->changed();
+ view()->buffer()->changed(updateFlags & Update::SinglePar);
}
lyx_view_->updateStatusBar();
}
}
}
- if (!quitting)
- // FIXME UNICODE: _() does not support anything but ascii.
- // Do we need a to_ascii() method?
+ if (!quitting) {
+ lyx_view_->updateMenubar();
+ lyx_view_->updateToolbars();
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) {