summaryrefslogtreecommitdiffstats
path: root/src/document-subset.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-07-21 19:22:44 +0000
committermental <mental@users.sourceforge.net>2006-07-21 19:22:44 +0000
commit8541bc72f1d7e7fe58591111d824e8dd5d103895 (patch)
treed374cc142954c52074bdf47a62be61bf21ee1ea1 /src/document-subset.cpp
parentswitch to sigc++ signals for "modified" and "release" (diff)
downloadinkscape-8541bc72f1d7e7fe58591111d824e8dd5d103895.tar.gz
inkscape-8541bc72f1d7e7fe58591111d824e8dd5d103895.zip
switch to sigc++ signal for "release"
(bzr r1450)
Diffstat (limited to 'src/document-subset.cpp')
-rw-r--r--src/document-subset.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/document-subset.cpp b/src/document-subset.cpp
index 4ef547320..5fcf1641c 100644
--- a/src/document-subset.cpp
+++ b/src/document-subset.cpp
@@ -36,10 +36,10 @@ struct DocumentSubset::Relations : public GC::Managed<GC::ATOMIC>,
SPObject *parent;
Siblings children;
- gulong release_connection;
+ sigc::connection release_connection;
sigc::connection position_changed_connection;
- Record() : parent(NULL), release_connection(0) {}
+ Record() : parent(NULL) {}
unsigned childIndex(SPObject *obj) {
Siblings::iterator found;
@@ -163,8 +163,9 @@ private:
sp_object_ref(obj);
Record &record=records[obj];
record.release_connection
- = g_signal_connect(obj, "release",
- (GCallback)&Relations::_release_object, this);
+ = obj->connectRelease(
+ sigc::mem_fun(this, &Relations::_release_object)
+ );
record.position_changed_connection
= obj->connectPositionChanged(
sigc::mem_fun(this, &Relations::reorder)
@@ -178,10 +179,7 @@ private:
void _doRemove(SPObject *obj) {
Record &record=records[obj];
- if (record.release_connection) {
- g_signal_handler_disconnect(obj, record.release_connection);
- record.release_connection = 0;
- }
+ record.release_connection.disconnect();
record.position_changed_connection.disconnect();
records.erase(obj);
@@ -212,10 +210,9 @@ private:
}
}
- static void _release_object(SPObject *obj, void *relations_p) {
- Relations &relations=*static_cast<Relations *>(relations_p);
- if (relations.get(obj)) {
- relations.remove(obj, true);
+ void _release_object(SPObject *obj) {
+ if (get(obj)) {
+ remove(obj, true);
}
}
};