]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetExternal.cpp
Fix GRAPHICS_EDIT of InsetGraphics
[lyx.git] / src / insets / InsetExternal.cpp
index c6f1142bc92119e291345833cc9f19cc0a7d4535..79d47ca8a519aa2b3ee085b0792cc406c0799c17 100644 (file)
 #include "MetricsInfo.h"
 #include "OutputParams.h"
 
+#include "frontends/alert.h"
+
 #include "graphics/PreviewLoader.h"
 
 #include "support/debug.h"
+#include "support/ExceptionMessage.h"
 #include "support/filetools.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
@@ -60,6 +63,8 @@ string defaultTemplateName;
 
 namespace lyx {
 
+namespace Alert = frontend::Alert;
+
 namespace external {
 
 TempName::TempName()
@@ -419,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();