/// we ran updateBuffer(), i.e., whether citation labels may need
/// to be updated.
mutable bool cite_labels_valid_;
+ /// these hold the file name and format, written to by Buffer::preview
+ /// and read from by LFUN_BUFFER_VIEW_CACHE.
+ FileName preview_file_;
+ string preview_format_;
mutable RefCache ref_cache_;
cite_labels_valid_ = cloned_buffer_->d->cite_labels_valid_;
unnamed = cloned_buffer_->d->unnamed;
internal_buffer = cloned_buffer_->d->internal_buffer;
+ preview_file_ = cloned_buffer_->d->preview_file_;
+ preview_format_ = cloned_buffer_->d->preview_format_;
}
it.paragraph().setId(cloned_it.paragraph().id());
} else
d->inset = new InsetText(this);
- d->inset->setAutoBreakRows(true);
d->inset->getText(0)->setMacrocontextPosition(par_iterator_begin());
}
enable = !isReadonly();
break;
+ case LFUN_BUFFER_VIEW_CACHE:
+ enable = (d->preview_file_).exists();
+ break;
+
default:
return false;
}
break;
}
+ case LFUN_BUFFER_VIEW_CACHE:
+ if (!formats.view(*this, d->preview_file_,
+ d->preview_format_))
+ dr.setMessage(_("Error viewing the output file."));
+ break;
+
default:
dispatched = false;
break;
// (2) export with included children only
ExportStatus const status = doExport(format, true, false, result_file);
FileName const previewFile(result_file);
- if (previewFile.exists() && !formats.view(*this, previewFile, format))
- return PreviewError;
- return (status == ExportSuccess) ? PreviewSuccess : status;
+
+ LATTEST (isClone());
+ d->cloned_buffer_->d->preview_file_ = previewFile;
+ d->cloned_buffer_->d->preview_format_ = format;
+
+ if (status != ExportSuccess)
+ return status;
+ if (previewFile.exists()) {
+ if (!formats.view(*this, previewFile, format))
+ return PreviewError;
+ else
+ return PreviewSuccess;
+ }
+ else {
+ // Successful export but no output file?
+ // Probably a bug in error detection.
+ LATTEST (status != ExportSuccess);
+
+ return status;
+ }
}