From 5835eaa282065fe8f44fb071a467f10c0adcb76a Mon Sep 17 00:00:00 2001 From: Thomas Holder Date: Tue, 6 Nov 2018 11:18:22 +0100 Subject: fix clipboard URL rebasing --- src/extension/implementation/implementation.h | 5 +++++ src/extension/internal/svg.cpp | 3 ++- src/extension/internal/svg.h | 3 +++ src/extension/output.cpp | 3 ++- src/extension/output.h | 3 ++- 5 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src/extension') 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(); -- cgit v1.2.3