X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fobject-hierarchy.cpp;h=49de16d0baf00de0c664a99c7899215c3480bc57;hb=1e944d29efb206f5d0b5d1069cb098e22169d548;hp=30f13e49a2b87a59474f2633efbeb7e7aeddfb6e;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/object-hierarchy.cpp b/src/object-hierarchy.cpp index 30f13e49a..49de16d0b 100644 --- a/src/object-hierarchy.cpp +++ b/src/object-hierarchy.cpp @@ -12,6 +12,8 @@ #include "sp-object.h" #include "object-hierarchy.h" +#include + namespace Inkscape { /** @@ -61,7 +63,7 @@ void ObjectHierarchy::setTop(SPObject *object) { } /** - * Add hierarchy from junior's parent to senior to this + * Add hierarchy from junior's parent to senior to this * hierarchy's top. */ void ObjectHierarchy::_addTop(SPObject *senior, SPObject *junior) { @@ -173,29 +175,31 @@ void ObjectHierarchy::_addBottom(SPObject *object) { _added_signal.emit(object); } -void ObjectHierarchy::_trim_for_release(SPObject *object, ObjectHierarchy *hier) -{ - hier->_trimBelow(object); - g_assert(!hier->_hierarchy.empty()); - g_assert(hier->_hierarchy.front().object == object); +void ObjectHierarchy::_trim_for_release(SPObject *object) { + this->_trimBelow(object); + g_assert(!this->_hierarchy.empty()); + g_assert(this->_hierarchy.front().object == object); sp_object_ref(object, NULL); - hier->_detach(hier->_hierarchy.front()); - hier->_hierarchy.pop_front(); - hier->_removed_signal.emit(object); + this->_detach(this->_hierarchy.front()); + this->_hierarchy.pop_front(); + this->_removed_signal.emit(object); sp_object_unref(object, NULL); - hier->_changed_signal.emit(hier->top(), hier->bottom()); + this->_changed_signal.emit(this->top(), this->bottom()); } ObjectHierarchy::Record ObjectHierarchy::_attach(SPObject *object) { sp_object_ref(object, NULL); - gulong id = g_signal_connect(G_OBJECT(object), "release", GCallback(&ObjectHierarchy::_trim_for_release), this); - return Record(object, id); + sigc::connection connection + = object->connectRelease( + sigc::mem_fun(*this, &ObjectHierarchy::_trim_for_release) + ); + return Record(object, connection); } -void ObjectHierarchy::_detach(ObjectHierarchy::Record const &rec) { - g_signal_handler_disconnect(G_OBJECT(rec.object), rec.handler_id); +void ObjectHierarchy::_detach(ObjectHierarchy::Record &rec) { + rec.connection.disconnect(); sp_object_unref(rec.object, NULL); }