From 3667b4dfe17238375df09a3c5d9fa20196129d7a Mon Sep 17 00:00:00 2001 From: MenTaLguY Date: Sat, 29 Jul 2006 21:06:37 +0000 Subject: switch to sigc++ SPObject signals for SPGradient (bzr r1508) --- src/sp-gradient.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/sp-gradient.cpp') diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index dd7b7b257..2e6d2a37c 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -26,6 +26,8 @@ #include #include "libnr/nr-scale-translate-ops.h" +#include +#include #include "display/nr-gradient-gpl.h" #include "svg/svg.h" @@ -377,6 +379,8 @@ sp_gradient_init(SPGradient *gr) gr->vector.stops.clear(); gr->color = NULL; + + new (&gr->modified_connection) sigc::connection(); } /** @@ -425,9 +429,7 @@ sp_gradient_release(SPObject *object) } if (gradient->ref) { - if (gradient->ref->getObject()) { - sp_signal_disconnect_by_data(gradient->ref->getObject(), gradient); - } + gradient->modified_connection.disconnect(); gradient->ref->detach(); delete gradient->ref; gradient->ref = NULL; @@ -438,6 +440,8 @@ sp_gradient_release(SPObject *object) gradient->color = NULL; } + gradient->modified_connection.~connection(); + if (((SPObjectClass *) gradient_parent_class)->release) ((SPObjectClass *) gradient_parent_class)->release(object); } @@ -518,12 +522,12 @@ static void gradient_ref_changed(SPObject *old_ref, SPObject *ref, SPGradient *gr) { if (old_ref) { - sp_signal_disconnect_by_data(old_ref, gr); + gr->modified_connection.disconnect(); } if ( SP_IS_GRADIENT(ref) && ref != gr ) { - g_signal_connect(G_OBJECT(ref), "modified", G_CALLBACK(gradient_ref_modified), gr); + gr->modified_connection = ref->connectModified(sigc::bind<2>(sigc::ptr_fun(&gradient_ref_modified), gr)); } /// \todo Fixme: what should the flags (second) argument be? */ gradient_ref_modified(ref, 0, gr); -- cgit v1.2.3