index 38300426db84822baa6b0a7fe65257be157f6cea..d4eb0114357af7aef1d3ca3091856aa375320939 100644 (file)
#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 <sigc++/functors/ptr_fun.h>
+#include <sigc++/adaptors/bind.h>
+
#define VBLOCK 16
static void sp_gradient_image_class_init (SPGradientImageClass *klass);
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;
image->gradient = NULL;
image->px = NULL;
+
+ new (&image->release_connection) sigc::connection();
+ new (&image->modified_connection) sigc::connection();
}
static void
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);
}
slider = SP_GRADIENT_IMAGE (widget);
requisition->width = 64;
- requisition->height = 16;
+ requisition->height = 12;
}
static 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);
}