summaryrefslogtreecommitdiffstats
path: root/src/object-hierarchy.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-07-21 21:28:48 +0000
committermental <mental@users.sourceforge.net>2006-07-21 21:28:48 +0000
commit545979bc06b42392e5eb37432d45e904aa0bc68c (patch)
tree29219a06fa17b1f44bc92f4919d5d3d7924893a0 /src/object-hierarchy.cpp
parentswitch to sigc++ signals for "release" (diff)
downloadinkscape-545979bc06b42392e5eb37432d45e904aa0bc68c.tar.gz
inkscape-545979bc06b42392e5eb37432d45e904aa0bc68c.zip
switch to sigc++ signal for "release"
(bzr r1452)
Diffstat (limited to 'src/object-hierarchy.cpp')
-rw-r--r--src/object-hierarchy.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/object-hierarchy.cpp b/src/object-hierarchy.cpp
index 658bcb511..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 <sigc++/functors/mem_fun.h>
+
namespace Inkscape {
/**
@@ -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);
}