diff options
| author | Marc Jeanmougin <marc@jeanmougin.fr> | 2019-01-15 14:49:08 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marc@jeanmougin.fr> | 2019-01-15 14:49:08 +0000 |
| commit | d4cc46084652526cf02221c80c9898d1e7d76e4e (patch) | |
| tree | 41eff4a7b8e85adbf94181f6a71b52a1b50eaec1 /src/io/file.cpp | |
| parent | Do not translate appdata and desktop when they are not installed (diff) | |
| parent | Initialize unused variable. (diff) | |
| download | inkscape-d4cc46084652526cf02221c80c9898d1e7d76e4e.tar.gz inkscape-d4cc46084652526cf02221c80c9898d1e7d76e4e.zip | |
Merge branch 'master' of gitlab.com:inkscape/inkscape
Diffstat (limited to 'src/io/file.cpp')
| -rw-r--r-- | src/io/file.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/io/file.cpp b/src/io/file.cpp index 3505f018d..5877e2727 100644 --- a/src/io/file.cpp +++ b/src/io/file.cpp @@ -21,6 +21,8 @@ #include "extension/output.h" #include "extension/input.h" +#include "object/sp-root.h" + // SPDocument* // ink_file_new(const std::string &Template) // { @@ -30,8 +32,9 @@ SPDocument* -ink_file_open(const Glib::RefPtr<Gio::File>& file) +ink_file_open(const Glib::RefPtr<Gio::File>& file, bool &cancelled) { + cancelled = false; SPDocument *doc = nullptr; @@ -43,20 +46,33 @@ ink_file_open(const Glib::RefPtr<Gio::File>& file) doc = nullptr; } catch (Inkscape::Extension::Input::open_failed &e) { doc = nullptr; + } catch (Inkscape::Extension::Input::open_cancelled &e) { + cancelled = true; + doc = nullptr; } // Try to open explicitly as SVG. - if (doc == nullptr) { + if (doc == nullptr && !cancelled) { try { doc = Inkscape::Extension::open(Inkscape::Extension::db.get(SP_MODULE_KEY_INPUT_SVG), path.c_str()); } catch (Inkscape::Extension::Input::no_extension_found &e) { doc = nullptr; } catch (Inkscape::Extension::Input::open_failed &e) { doc = nullptr; + } catch (Inkscape::Extension::Input::open_cancelled &e) { + cancelled = true; + doc = nullptr; } } + if (doc == nullptr) { std::cerr << "ink_file_open: '" << path << "' cannot be opened!" << std::endl; + } else { + + // This is the only place original values should be set. + SPRoot *root = doc->getRoot(); + root->original.inkscape = root->version.inkscape; + root->original.svg = root->version.svg; } return doc; |
