Mercurial > pidgin
comparison 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 |
comparison
equal
deleted
inserted
replaced
14342:12156328fb4f | 14343:0387a167f342 |
---|---|
17 SIG_EXPOSE, | 17 SIG_EXPOSE, |
18 SIG_SIZE_REQUEST, | 18 SIG_SIZE_REQUEST, |
19 SIG_CONFIRM_SIZE, | 19 SIG_CONFIRM_SIZE, |
20 SIG_SIZE_CHANGED, | 20 SIG_SIZE_CHANGED, |
21 SIG_POSITION, | 21 SIG_POSITION, |
22 SIG_CLICKED, | |
22 SIGS | 23 SIGS |
23 }; | 24 }; |
24 | 25 |
25 static GObjectClass *parent_class = NULL; | 26 static GObjectClass *parent_class = NULL; |
26 static guint signals[SIGS] = { 0 }; | 27 static guint signals[SIGS] = { 0 }; |
114 klass->gained_focus = gnt_widget_focus_change; | 115 klass->gained_focus = gnt_widget_focus_change; |
115 klass->confirm_size = gnt_widget_dummy_confirm_size; | 116 klass->confirm_size = gnt_widget_dummy_confirm_size; |
116 | 117 |
117 klass->key_pressed = NULL; | 118 klass->key_pressed = NULL; |
118 klass->activate = NULL; | 119 klass->activate = NULL; |
120 klass->clicked = NULL; | |
119 | 121 |
120 signals[SIG_DESTROY] = | 122 signals[SIG_DESTROY] = |
121 g_signal_new("destroy", | 123 g_signal_new("destroy", |
122 G_TYPE_FROM_CLASS(klass), | 124 G_TYPE_FROM_CLASS(klass), |
123 G_SIGNAL_RUN_LAST, | 125 G_SIGNAL_RUN_LAST, |
211 G_SIGNAL_RUN_LAST, | 213 G_SIGNAL_RUN_LAST, |
212 G_STRUCT_OFFSET(GntWidgetClass, key_pressed), | 214 G_STRUCT_OFFSET(GntWidgetClass, key_pressed), |
213 gnt_boolean_handled_accumulator, NULL, | 215 gnt_boolean_handled_accumulator, NULL, |
214 gnt_closure_marshal_BOOLEAN__STRING, | 216 gnt_closure_marshal_BOOLEAN__STRING, |
215 G_TYPE_BOOLEAN, 1, G_TYPE_STRING); | 217 G_TYPE_BOOLEAN, 1, G_TYPE_STRING); |
218 | |
219 signals[SIG_CLICKED] = | |
220 g_signal_new("clicked", | |
221 G_TYPE_FROM_CLASS(klass), | |
222 G_SIGNAL_RUN_LAST, | |
223 G_STRUCT_OFFSET(GntWidgetClass, clicked), | |
224 gnt_boolean_handled_accumulator, NULL, | |
225 gnt_closure_marshal_BOOLEAN__INT_INT_INT, | |
226 G_TYPE_BOOLEAN, 3, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); | |
216 | 227 |
217 DEBUG; | 228 DEBUG; |
218 } | 229 } |
219 | 230 |
220 /****************************************************************************** | 231 /****************************************************************************** |
370 if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS)) | 381 if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS)) |
371 return FALSE; | 382 return FALSE; |
372 | 383 |
373 keys = gnt_widget_remap_keys(widget, keys); | 384 keys = gnt_widget_remap_keys(widget, keys); |
374 g_signal_emit(widget, signals[SIG_KEY_PRESSED], 0, keys, &ret); | 385 g_signal_emit(widget, signals[SIG_KEY_PRESSED], 0, keys, &ret); |
386 return ret; | |
387 } | |
388 | |
389 gboolean | |
390 gnt_widget_clicked(GntWidget *widget, GntMouseEvent event, int x, int y) | |
391 { | |
392 gboolean ret; | |
393 g_signal_emit(widget, signals[SIG_CLICKED], 0, event, x, y, &ret); | |
375 return ret; | 394 return ret; |
376 } | 395 } |
377 | 396 |
378 void | 397 void |
379 gnt_widget_expose(GntWidget *widget, int x, int y, int width, int height) | 398 gnt_widget_expose(GntWidget *widget, int x, int y, int width, int height) |