summaryrefslogtreecommitdiffstats
path: root/src/sp-pattern.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-07-29 21:12:13 +0000
committermental <mental@users.sourceforge.net>2006-07-29 21:12:13 +0000
commit15a8527bec633fd3f42a08075d8cb93edc1bef4c (patch)
tree47d85ecd690aaa3589ff11164525373020fab374 /src/sp-pattern.cpp
parentswitch to sigc++ SPObject signals for SPGradient (diff)
downloadinkscape-15a8527bec633fd3f42a08075d8cb93edc1bef4c.tar.gz
inkscape-15a8527bec633fd3f42a08075d8cb93edc1bef4c.zip
switch to sigc++ SPObject signals for SPPattern
(bzr r1509)
Diffstat (limited to '')
-rw-r--r--src/sp-pattern.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/sp-pattern.cpp b/src/sp-pattern.cpp
index 85a8ad649..89eeacec4 100644
--- a/src/sp-pattern.cpp
+++ b/src/sp-pattern.cpp
@@ -27,6 +27,9 @@
#include "sp-pattern.h"
#include "xml/repr.h"
+#include <sigc++/functors/ptr_fun.h>
+#include <sigc++/adaptors/bind.h>
+
/*
* Pattern
*/
@@ -137,6 +140,8 @@ sp_pattern_init (SPPattern *pat)
pat->height.unset();
pat->viewBox_set = FALSE;
+
+ new (&pat->modified_connection) sigc::connection();
}
static void
@@ -172,13 +177,14 @@ sp_pattern_release (SPObject *object)
}
if (pat->ref) {
- if (pat->ref->getObject())
- sp_signal_disconnect_by_data(pat->ref->getObject(), pat);
+ pat->modified_connection.disconnect();
pat->ref->detach();
delete pat->ref;
pat->ref = NULL;
}
+ pat->modified_connection.~connection();
+
if (((SPObjectClass *) pattern_parent_class)->release)
((SPObjectClass *) pattern_parent_class)->release (object);
}
@@ -403,10 +409,10 @@ static void
pattern_ref_changed(SPObject *old_ref, SPObject *ref, SPPattern *pat)
{
if (old_ref) {
- sp_signal_disconnect_by_data(old_ref, pat);
+ pat->modified_connection.disconnect();
}
if (SP_IS_PATTERN (ref)) {
- g_signal_connect(G_OBJECT (ref), "modified", G_CALLBACK (pattern_ref_modified), pat);
+ pat->modified_connection = ref->connectModified(sigc::bind<2>(sigc::ptr_fun(&pattern_ref_modified), pat));
}
pattern_ref_modified (ref, 0, pat);