// 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;
}
enable = cmd.argument == "custom"
|| Exporter::IsExportable(*buf, cmd.argument);
break;
- case LFUN_CUT:
- case LFUN_COPY:
- enable = cur.selection();
- break;
case LFUN_RUNCHKTEX:
enable = buf->isLatex() && lyxrc.chktex_command != "none";
case LFUN_LAYOUT:
case LFUN_LAYOUT_PARAGRAPH:
- enable = !cur.inset().forceDefaultParagraphs(&cur.inset());
+ enable = !cur.inset().forceDefaultParagraphs(cur.idx());
break;
case LFUN_VC_REGISTER:
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:
InsetIterator const end = inset_iterator_end(inset);
for (; it != end; ++it) {
if (inset_code == InsetBase::NO_CODE
- || inset_code == it->lyxCode())
- it->dispatch(cur, fr);
+ || inset_code == it->lyxCode()) {
+ LCursor tmpcur = cur;
+ tmpcur.pushLeft(*it);
+ it->dispatch(tmpcur, fr);
+ }
}
update = true;
break;
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();
}