// FIXME: This is a bit problematic because we don't check if this is
// a document BufferView or not for these LFUNs. We probably have to
// dispatch both to currentBufferView() and, if that fails,
- // to documentBufferView(); same as we do know for current Buffer and
- // document Buffer. Ideally those LFUN should go to Buffer as they*
+ // to documentBufferView(); same as we do now for current Buffer and
+ // document Buffer. Ideally those LFUN should go to Buffer as they
// operate on the full Buffer and the cursor is only needed either for
// an Undo record or to restore a cursor position. But we don't know
// how to do that inside Buffer of course.
break;
case LFUN_UNDO:
- flag.setEnabled(buffer_.undo().hasUndoStack());
+ // We do not use the LyXAction flag for readonly because Undo sets the
+ // buffer clean/dirty status by itself.
+ flag.setEnabled(!buffer_.isReadonly() && buffer_.undo().hasUndoStack());
break;
case LFUN_REDO:
- flag.setEnabled(buffer_.undo().hasRedoStack());
+ // We do not use the LyXAction flag for readonly because Redo sets the
+ // buffer clean/dirty status by itself.
+ flag.setEnabled(!buffer_.isReadonly() && buffer_.undo().hasRedoStack());
break;
case LFUN_FILE_INSERT:
case LFUN_FILE_INSERT_PLAINTEXT_PARA:
}
case LFUN_TEXTCLASS_APPLY: {
- bool success = LayoutFileList::get().load(argument, buffer_.temppath());
- if (!success)
- success = LayoutFileList::get().load(argument, buffer_.filePath());
+ // since this shortcircuits, the second call is made only if
+ // the first fails
+ bool const success =
+ LayoutFileList::get().load(argument, buffer_.temppath()) ||
+ LayoutFileList::get().load(argument, buffer_.filePath());
if (!success) {
docstring s = bformat(_("The document class `%1$s' "
"could not be loaded."), from_utf8(argument));
}
case LFUN_TEXTCLASS_LOAD: {
- bool success = LayoutFileList::get().load(argument, buffer_.temppath());
- if (!success)
- success = LayoutFileList::get().load(argument, buffer_.filePath());
+ // since this shortcircuits, the second call is made only if
+ // the first fails
+ bool const success =
+ LayoutFileList::get().load(argument, buffer_.temppath()) ||
+ LayoutFileList::get().load(argument, buffer_.filePath());
if (!success) {
docstring s = bformat(_("The document class `%1$s' "
"could not be loaded."), from_utf8(argument));
InsetBibtex * inset = getInsetByCode<InsetBibtex>(tmpcur,
BIBTEX_CODE);
if (inset) {
- if (inset->addDatabase(cmd.argument()))
- buffer_.updateBibfilesCache();
+ if (inset->addDatabase(cmd.argument())) {
+ buffer_.invalidateBibfileCache();
+ dr.forceBufferUpdate();
+ }
}
break;
}
InsetBibtex * inset = getInsetByCode<InsetBibtex>(tmpcur,
BIBTEX_CODE);
if (inset) {
- if (inset->delDatabase(cmd.argument()))
- buffer_.updateBibfilesCache();
+ if (inset->delDatabase(cmd.argument())) {
+ buffer_.invalidateBibfileCache();
+ dr.forceBufferUpdate();
+ }
}
break;
}