return flag;
}
- switch (cmd.action) {
- case LFUN_UNKNOWN_ACTION:
+ if (cmd.action == LFUN_UNKNOWN_ACTION) {
flag.unknown(true);
flag.setEnabled(false);
- break;
-
- default:
- break;
- }
-
- if (flag.unknown()) {
flag.message(from_utf8(N_("Unknown action")));
return flag;
}
- if (!flag.enabled()) {
- if (flag.message().empty())
- flag.message(from_utf8(N_("Command disabled")));
- return flag;
- }
-
// I would really like to avoid having this switch and rather try to
// encode this in the function itself.
// -- And I'd rather let an inset decide which LFUNs it is willing
break;
}
- case LFUN_DROP_LAYOUTS_CHOICE:
case LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE:
case LFUN_REPEAT:
case LFUN_PREFERENCES_SAVE:
- case LFUN_INSET_EDIT:
case LFUN_BUFFER_SAVE_AS_DEFAULT:
// these are handled in our dispatch()
break;
// FIXME: this LFUN should also work without any view.
Buffer * buffer = (lv && lv->documentBufferView())
? &(lv->documentBufferView()->buffer()) : 0;
- buffer = &lv->currentBufferView()->buffer();
- if (buffer && !theBufferList().isLoaded(buffer))
- buffer = 0;
if (buffer)
buffer->undo().beginUndoGroup();
while (!arg.empty()) {
func.origin = cmd.origin;
dispatch(func);
}
- if (buffer)
+ // the buffer may have been closed by one action
+ if (theBufferList().isLoaded(buffer))
buffer->undo().endUndoGroup();
break;
}
}
}
- // Is this a function that acts on inset at point?
- Inset * inset = bv->cursor().nextInset();
- if (lyxaction.funcHasFlag(action, LyXAction::AtPoint)
- && inset) {
- bv->cursor().result().dispatched(true);
- bv->cursor().result().update(Update::FitCursor | Update::Force);
- FuncRequest tmpcmd = cmd;
- inset->dispatch(bv->cursor(), tmpcmd);
- if (bv->cursor().result().dispatched()) {
- updateFlags = bv->cursor().result().update();
- break;
- }
- }
-
// Let the current Cursor dispatch its own actions.
Cursor old = bv->cursor();
bv->cursor().getPos(cursorPosBeforeDispatchX_,