summaryrefslogtreecommitdiffstats
path: root/src/object/uri-references.cpp
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2019-10-24 16:21:53 +0000
committerTavmjong Bah <tavmjong@free.fr>2019-10-24 16:21:53 +0000
commit2b9eeffadbce92b9aa38e3edd9211329b0ec8c97 (patch)
treec7fbad475d80ab2a8039c69fa19d12988ca7df94 /src/object/uri-references.cpp
parentupdate expected_rendering/test-baseline-shift.png (diff)
downloadinkscape-2b9eeffadbce92b9aa38e3edd9211329b0ec8c97.tar.gz
inkscape-2b9eeffadbce92b9aa38e3edd9211329b0ec8c97.zip
Fix gradient/mesh handles after object with gradient/mesh cloned.
Fixes https://bugs.launchpad.net/inkscape/+bug/453067 Fixes https://gitlab.com/inkscape/inkscape/issues/130
Diffstat (limited to 'src/object/uri-references.cpp')
-rw-r--r--src/object/uri-references.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/object/uri-references.cpp b/src/object/uri-references.cpp
index 35c1d7e17..b257eecef 100644
--- a/src/object/uri-references.cpp
+++ b/src/object/uri-references.cpp
@@ -47,7 +47,10 @@ URIReference::URIReference(SPDocument *owner_document)
g_assert(_owner_document != nullptr);
}
-URIReference::~URIReference() { detach(); }
+URIReference::~URIReference()
+{
+ detach();
+}
/*
* The main ideas here are:
@@ -106,8 +109,6 @@ bool URIReference::_acceptObject(SPObject *obj) const
return true;
}
-
-
void URIReference::attach(const URI &uri)
{
SPDocument *document = nullptr;
@@ -188,7 +189,6 @@ void URIReference::attach(const URI &uri)
_setObject(document->getObjectById(id));
_connection = document->connectIdChanged(id, sigc::mem_fun(*this, &URIReference::_setObject));
-
g_free(id);
}
@@ -213,12 +213,12 @@ void URIReference::_setObject(SPObject *obj)
_obj = obj;
_release_connection.disconnect();
- if (_obj) {
+ if (_obj && (!_owner || !_owner->cloned)) {
_obj->hrefObject(_owner);
_release_connection = _obj->connectRelease(sigc::mem_fun(*this, &URIReference::_release));
}
_changed_signal.emit(old_obj, _obj);
- if (old_obj) {
+ if (old_obj && (!_owner || !_owner->cloned)) {
/* release the old object _after_ the signal emission */
old_obj->unhrefObject(_owner);
}