summaryrefslogtreecommitdiffstats
path: root/src/extension
diff options
context:
space:
mode:
authorThomas Holder <thomas@thomas-holder.de>2018-11-06 10:18:22 +0000
committerThomas Holder <thomas@thomas-holder.de>2018-11-07 20:58:07 +0000
commit5835eaa282065fe8f44fb071a467f10c0adcb76a (patch)
treee9f07e0514b6ccdfaf52619b0a93044cefe19907 /src/extension
parentRefactor rebase_hrefs with new URI API (diff)
downloadinkscape-5835eaa282065fe8f44fb071a467f10c0adcb76a.tar.gz
inkscape-5835eaa282065fe8f44fb071a467f10c0adcb76a.zip
fix clipboard URL rebasing
Diffstat (limited to 'src/extension')
-rw-r--r--src/extension/implementation/implementation.h5
-rw-r--r--src/extension/internal/svg.cpp3
-rw-r--r--src/extension/internal/svg.h3
-rw-r--r--src/extension/output.cpp3
-rw-r--r--src/extension/output.h3
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();