diff src/pixbuf-renderer.c @ 128:98e2632b5d3d

improved connected scroll and active image switching
author nadvornik
date Tue, 10 Jul 2007 21:25:51 +0000
parents 8d358a53146e
children b1acdfc7271b
line wrap: on
line diff
--- a/src/pixbuf-renderer.c	Fri Jun 29 15:16:46 2007 +0000
+++ b/src/pixbuf-renderer.c	Tue Jul 10 21:25:51 2007 +0000
@@ -136,6 +136,7 @@
 	SIGNAL_CLICKED,
 	SIGNAL_SCROLL_NOTIFY,
 	SIGNAL_RENDER_COMPLETE,
+	SIGNAL_DRAG,
 	SIGNAL_COUNT
 };
 
@@ -420,6 +421,16 @@
 			     NULL, NULL,
 			     g_cclosure_marshal_VOID__VOID,
 			     G_TYPE_NONE, 0);
+
+	signals[SIGNAL_DRAG] = 
+		g_signal_new("drag",
+			     G_OBJECT_CLASS_TYPE(gobject_class),
+			     G_SIGNAL_RUN_LAST,
+			     G_STRUCT_OFFSET(PixbufRendererClass, drag),
+			     NULL, NULL,
+			     g_cclosure_marshal_VOID__BOXED,
+			     G_TYPE_NONE, 1,
+			     GDK_TYPE_EVENT);
 }
 
 static void pixbuf_renderer_init(PixbufRenderer *pr)
@@ -2487,6 +2498,11 @@
 		}
 }
 
+static void pr_drag_signal(PixbufRenderer *pr, GdkEventButton *bevent)
+{
+	g_signal_emit(pr, signals[SIGNAL_DRAG], 0, bevent);
+}
+
 /*
  *-------------------------------------------------------------------
  * sync and clamp
@@ -3000,6 +3016,8 @@
 	pixbuf_renderer_scroll(pr, (pr->drag_last_x - bevent->x) * accel,
 			       (pr->drag_last_y - bevent->y) * accel);
 
+	pr_drag_signal(pr, bevent);
+
 	pr->drag_last_x = bevent->x;
 	pr->drag_last_y = bevent->y;