// by a binding
if (keysym->isText() && keyseq.length() == 1) {
lyxerr[Debug::KEY] << "isText() is true, inserting." << endl;
- func = FuncRequest(LFUN_SELFINSERT);
+ func = FuncRequest(LFUN_SELFINSERT,
+ FuncRequest::KEYBOARD);
} else {
lyxerr[Debug::KEY] << "Unknown, !isText() - giving up" << endl;
owner->message(_("Unknown function."));
if (func.action == LFUN_SELFINSERT) {
if (encoded_last_key != 0) {
string const arg(1, encoded_last_key);
- dispatch(FuncRequest(LFUN_SELFINSERT, arg));
+ dispatch(FuncRequest(LFUN_SELFINSERT, arg,
+ FuncRequest::KEYBOARD));
lyxerr[Debug::KEY]
<< "SelfInsert arg[`" << arg << "']" << endl;
}
break;
}
+ case LFUN_MENUWRITE: {
+ enable = !view()->buffer()->isClean();
+ break;
+ }
+
// this one is difficult to get right. As a half-baked
// solution, we consider only the first action of the sequence
case LFUN_SEQUENCE: {
case LFUN_CANCEL:
case LFUN_META_FAKE:
case LFUN_CLOSEBUFFER:
- case LFUN_MENUWRITE:
case LFUN_WRITEAS:
case LFUN_UPDATE:
case LFUN_PREVIEW:
view()->update(Update::FitCursor);
// if we executed a mutating lfun, mark the buffer as dirty
- // FIXME: Why not use flag.enabled() but call getStatus again?
- if (getStatus(cmd).enabled()
- && !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)
- && !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly))
+ if (flag.enabled()
+ && !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)
+ && !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly))
view()->buffer()->markDirty();
}