diff console/libgnt/gntwidget.c @ 14343:0387a167f342

[gaim-migrate @ 17044] A WM can now act on keystrokes. As an example, the sample WM will toggle the buddylist on pressing Alt+b. Mouse clicking and scrolling is now supported in most/all widgets. To use a WM, you need to add "wm=/path/to/wm.so" under [general] in ~/.gntrc. committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 26 Aug 2006 12:54:39 +0000
parents b1b76fb9c739
children 3ac156db9cb6
line wrap: on
line diff
--- a/console/libgnt/gntwidget.c	Sat Aug 26 07:11:55 2006 +0000
+++ b/console/libgnt/gntwidget.c	Sat Aug 26 12:54:39 2006 +0000
@@ -19,6 +19,7 @@
 	SIG_CONFIRM_SIZE,
 	SIG_SIZE_CHANGED,
 	SIG_POSITION,
+	SIG_CLICKED,
 	SIGS
 };
 
@@ -116,6 +117,7 @@
 	
 	klass->key_pressed = NULL;
 	klass->activate = NULL;
+	klass->clicked = NULL;
 	
 	signals[SIG_DESTROY] = 
 		g_signal_new("destroy",
@@ -214,6 +216,15 @@
 					 gnt_closure_marshal_BOOLEAN__STRING,
 					 G_TYPE_BOOLEAN, 1, G_TYPE_STRING);
 
+	signals[SIG_CLICKED] = 
+		g_signal_new("clicked",
+					 G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST,
+					 G_STRUCT_OFFSET(GntWidgetClass, clicked),
+					 gnt_boolean_handled_accumulator, NULL,
+					 gnt_closure_marshal_BOOLEAN__INT_INT_INT,
+					 G_TYPE_BOOLEAN, 3, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
+
 	DEBUG;
 }
 
@@ -375,6 +386,14 @@
 	return ret;
 }
 
+gboolean
+gnt_widget_clicked(GntWidget *widget, GntMouseEvent event, int x, int y)
+{
+	gboolean ret;
+	g_signal_emit(widget, signals[SIG_CLICKED], 0, event, x, y, &ret);
+	return ret;
+}
+
 void
 gnt_widget_expose(GntWidget *widget, int x, int y, int width, int height)
 {