From 2b9eeffadbce92b9aa38e3edd9211329b0ec8c97 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Thu, 24 Oct 2019 18:21:53 +0200 Subject: 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 --- src/object/uri-references.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/object/uri-references.cpp') 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); } -- cgit v1.2.3