diff options
| author | MenTaLguY <mental@rydia.net> | 2006-07-29 21:12:13 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2006-07-29 21:12:13 +0000 |
| commit | 15a8527bec633fd3f42a08075d8cb93edc1bef4c (patch) | |
| tree | 47d85ecd690aaa3589ff11164525373020fab374 /src/sp-pattern.cpp | |
| parent | switch to sigc++ SPObject signals for SPGradient (diff) | |
| download | inkscape-15a8527bec633fd3f42a08075d8cb93edc1bef4c.tar.gz inkscape-15a8527bec633fd3f42a08075d8cb93edc1bef4c.zip | |
switch to sigc++ SPObject signals for SPPattern
(bzr r1509)
Diffstat (limited to '')
| -rw-r--r-- | src/sp-pattern.cpp | 14 |
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); |
