]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetExternal.cpp
Cosmetics.
[lyx.git] / src / insets / InsetExternal.cpp
index 5237cc9aa048d9a385e3de5f97a2ee7d9c1fecfa..79d47ca8a519aa2b3ee085b0792cc406c0799c17 100644 (file)
@@ -424,6 +424,23 @@ InsetExternal::~InsetExternal()
 }
 
 
+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();
@@ -444,15 +461,6 @@ void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd)
        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;
        }
@@ -497,11 +505,7 @@ void InsetExternal::registerEmbeddedFiles(EmbeddedFileList & files) const
 
 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;
 }
 
 
@@ -728,7 +732,7 @@ void InsetExternal::read(Lexer & lex)
        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);
        }
 }