]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetExternal.cpp
Fix GRAPHICS_EDIT of InsetGraphics
[lyx.git] / src / insets / InsetExternal.cpp
index 63102bc506737faee5e3229e5ffde71a69ba33df..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()
@@ -421,8 +426,17 @@ InsetExternal::~InsetExternal()
 
 void InsetExternal::setBuffer(Buffer & buffer)
 {
-       if (buffer_)
-               params_.filename = params_.filename.copyTo(&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);
 }