X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fwidgets%2Fgradient-image.cpp;h=d4eb0114357af7aef1d3ca3091856aa375320939;hb=a0d7923d21c9eb421af61dc0996f32230ca61b35;hp=38300426db84822baa6b0a7fe65257be157f6cea;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/widgets/gradient-image.cpp b/src/widgets/gradient-image.cpp index 38300426d..d4eb01143 100644 --- a/src/widgets/gradient-image.cpp +++ b/src/widgets/gradient-image.cpp @@ -17,8 +17,12 @@ #include "../display/nr-plain-stuff.h" #include "../display/nr-plain-stuff-gdk.h" #include "gradient-image.h" +#include "sp-gradient.h" #include "sp-gradient-fns.h" +#include +#include + #define VBLOCK 16 static void sp_gradient_image_class_init (SPGradientImageClass *klass); @@ -31,8 +35,8 @@ static void sp_gradient_image_size_request (GtkWidget *widget, GtkRequisition *r static void sp_gradient_image_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gint sp_gradient_image_expose (GtkWidget *widget, GdkEventExpose *event); -static void sp_gradient_image_gradient_release (SPGradient *gr, SPGradientImage *im); -static void sp_gradient_image_gradient_modified (SPGradient *gr, guint flags, SPGradientImage *im); +static void sp_gradient_image_gradient_release (SPObject *, SPGradientImage *im); +static void sp_gradient_image_gradient_modified (SPObject *, guint flags, SPGradientImage *im); static void sp_gradient_image_update (SPGradientImage *img); static GtkWidgetClass *parent_class; @@ -82,6 +86,9 @@ sp_gradient_image_init (SPGradientImage *image) image->gradient = NULL; image->px = NULL; + + new (&image->release_connection) sigc::connection(); + new (&image->modified_connection) sigc::connection(); } static void @@ -92,10 +99,14 @@ sp_gradient_image_destroy (GtkObject *object) image = SP_GRADIENT_IMAGE (object); if (image->gradient) { - sp_signal_disconnect_by_data (image->gradient, image); + image->release_connection.disconnect(); + image->modified_connection.disconnect(); image->gradient = NULL; } + image->release_connection.~connection(); + image->modified_connection.~connection(); + if (((GtkObjectClass *) (parent_class))->destroy) (* ((GtkObjectClass *) (parent_class))->destroy) (object); } @@ -138,7 +149,7 @@ sp_gradient_image_size_request (GtkWidget *widget, GtkRequisition *requisition) slider = SP_GRADIENT_IMAGE (widget); requisition->width = 64; - requisition->height = 16; + requisition->height = 12; } static void @@ -217,24 +228,26 @@ void sp_gradient_image_set_gradient (SPGradientImage *image, SPGradient *gradient) { if (image->gradient) { - sp_signal_disconnect_by_data (image->gradient, image); + image->release_connection.disconnect(); + image->modified_connection.disconnect(); } image->gradient = gradient; if (gradient) { - g_signal_connect (G_OBJECT (gradient), "release", G_CALLBACK (sp_gradient_image_gradient_release), image); - g_signal_connect (G_OBJECT (gradient), "modified", G_CALLBACK (sp_gradient_image_gradient_modified), image); + image->release_connection = gradient->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_gradient_image_gradient_release), image)); + image->modified_connection = gradient->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_gradient_image_gradient_modified), image)); } sp_gradient_image_update (image); } static void -sp_gradient_image_gradient_release (SPGradient *gradient, SPGradientImage *image) +sp_gradient_image_gradient_release (SPObject *, SPGradientImage *image) { if (image->gradient) { - sp_signal_disconnect_by_data (image->gradient, image); + image->release_connection.disconnect(); + image->modified_connection.disconnect(); } image->gradient = NULL; @@ -243,7 +256,7 @@ sp_gradient_image_gradient_release (SPGradient *gradient, SPGradientImage *image } static void -sp_gradient_image_gradient_modified (SPGradient *gradient, guint flags, SPGradientImage *image) +sp_gradient_image_gradient_modified (SPObject *, guint flags, SPGradientImage *image) { sp_gradient_image_update (image); }