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)