}
+void InsetExternal::setBuffer(Buffer & buffer)
+{
+ if (buffer_) {
+ try {
+ // a file may not be copied successfully when, e.g. buffer_
+ // has already been closed.
+ params_.filename = params_.filename.copyTo(&buffer);
+ } catch (ExceptionMessage const & message) {
+ Alert::error(message.title_, message.details_);
+ // failed to embed
+ params_.filename.setEmbed(false);
+ }
+ }
+ Inset::setBuffer(buffer);
+}
+
+
void InsetExternal::statusChanged() const
{
updateFrontend();
case LFUN_INSET_MODIFY: {
InsetExternalParams p;
InsetExternalMailer::string2params(to_utf8(cmd.argument()), buffer(), p);
- if (!p.filename.empty()) {
- try {
- p.filename.enable(buffer().embedded(), &buffer());
- } catch (ExceptionMessage const & message) {
- Alert::error(message.title_, message.details_);
- // do not set parameter if an error happens
- break;
- }
- }
setParams(p);
break;
}
void InsetExternal::updateEmbeddedFile(EmbeddedFile const & file)
{
- // when embedding is enabled, change of embedding status leads to actions
- EmbeddedFile temp = file;
- temp.enable(buffer().embedded(), &buffer());
- // this will not be set if an exception is thorwn in enable()
- params_.filename = temp;
+ params_.filename = file;
}
InsetExternalParams params;
if (params.read(buffer(), lex)) {
// exception handling is not needed as long as embedded files are in place.
- params.filename.enable(buffer().embedded(), &buffer());
+ params.filename.enable(buffer().embedded(), &buffer(), false);
setParams(params);
}
}