diff options
| author | Thomas Holder <thomas@thomas-holder.de> | 2018-11-06 10:18:22 +0000 |
|---|---|---|
| committer | Thomas Holder <thomas@thomas-holder.de> | 2018-11-07 20:58:07 +0000 |
| commit | 5835eaa282065fe8f44fb071a467f10c0adcb76a (patch) | |
| tree | e9f07e0514b6ccdfaf52619b0a93044cefe19907 /src/extension | |
| parent | Refactor rebase_hrefs with new URI API (diff) | |
| download | inkscape-5835eaa282065fe8f44fb071a467f10c0adcb76a.tar.gz inkscape-5835eaa282065fe8f44fb071a467f10c0adcb76a.zip | |
fix clipboard URL rebasing
Diffstat (limited to 'src/extension')
| -rw-r--r-- | src/extension/implementation/implementation.h | 5 | ||||
| -rw-r--r-- | src/extension/internal/svg.cpp | 3 | ||||
| -rw-r--r-- | src/extension/internal/svg.h | 3 | ||||
| -rw-r--r-- | src/extension/output.cpp | 3 | ||||
| -rw-r--r-- | src/extension/output.h | 3 |
5 files changed, 14 insertions, 3 deletions
diff --git a/src/extension/implementation/implementation.h b/src/extension/implementation/implementation.h index 7658e5a83..88afa0d27 100644 --- a/src/extension/implementation/implementation.h +++ b/src/extension/implementation/implementation.h @@ -178,6 +178,11 @@ public: Geom::Point const & /*p*/, SPStyle const * /*style*/) { return 0; } virtual void processPath(Inkscape::XML::Node * /*node*/) {} + + /** + * If detach = true, when saving to a file, don't store URIs realtive to the filename + */ + virtual void setDetachBase(bool detach) {} }; diff --git a/src/extension/internal/svg.cpp b/src/extension/internal/svg.cpp index 8fb1e61b9..4d6a24b40 100644 --- a/src/extension/internal/svg.cpp +++ b/src/extension/internal/svg.cpp @@ -397,7 +397,8 @@ Svg::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *filena } if (!sp_repr_save_rebased_file(rdoc, filename, SP_SVG_NS_URI, - doc->getBase(), filename)) { + doc->getBase(), // + m_detachbase ? nullptr : filename)) { throw Inkscape::Extension::Output::save_failed(); } diff --git a/src/extension/internal/svg.h b/src/extension/internal/svg.h index cba0ebf3d..17f3f7bb2 100644 --- a/src/extension/internal/svg.h +++ b/src/extension/internal/svg.h @@ -22,8 +22,11 @@ namespace Extension { namespace Internal { class Svg : public Inkscape::Extension::Implementation::Implementation { + bool m_detachbase = false; public: + void setDetachBase(bool detach) override { m_detachbase = detach; } + void save( Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *filename ) override; diff --git a/src/extension/output.cpp b/src/extension/output.cpp index 5a39a2403..e863c77fc 100644 --- a/src/extension/output.cpp +++ b/src/extension/output.cpp @@ -211,8 +211,9 @@ Output::prefs () could be changed, and old files will still work properly. */ void -Output::save(SPDocument *doc, gchar const *filename) +Output::save(SPDocument *doc, gchar const *filename, bool detachbase) { + imp->setDetachBase(detachbase); imp->save(this, doc, filename); return; diff --git a/src/extension/output.h b/src/extension/output.h index de1ce4503..a67a3cc30 100644 --- a/src/extension/output.h +++ b/src/extension/output.h @@ -42,7 +42,8 @@ public: ~Output () override; bool check () override; void save (SPDocument *doc, - gchar const *uri); + gchar const *filename, + bool detachbase = false); bool prefs (); gchar * get_mimetype(); gchar * get_extension(); |
