| 72 |
72 |
| 73 static void |
73 static void |
| 74 gnt_widget_dispose(GObject *obj) |
74 gnt_widget_dispose(GObject *obj) |
| 75 { |
75 { |
| 76 GntWidget *self = GNT_WIDGET(obj); |
76 GntWidget *self = GNT_WIDGET(obj); |
| 77 |
77 g_signal_emit(self, signals[SIG_DESTROY], 0); |
| 78 if(!(GNT_WIDGET_FLAGS(self) & GNT_WIDGET_DESTROYING)) { |
|
| 79 GNT_WIDGET_SET_FLAGS(self, GNT_WIDGET_DESTROYING); |
|
| 80 |
|
| 81 g_signal_emit(self, signals[SIG_DESTROY], 0); |
|
| 82 |
|
| 83 GNT_WIDGET_UNSET_FLAGS(self, GNT_WIDGET_DESTROYING); |
|
| 84 } |
|
| 85 |
|
| 86 parent_class->dispose(obj); |
78 parent_class->dispose(obj); |
| 87 GNTDEBUG; |
79 GNTDEBUG; |
| 88 } |
80 } |
| 89 |
81 |
| 90 static void |
82 static void |
| 318 void |
310 void |
| 319 gnt_widget_destroy(GntWidget *obj) |
311 gnt_widget_destroy(GntWidget *obj) |
| 320 { |
312 { |
| 321 g_return_if_fail(GNT_IS_WIDGET(obj)); |
313 g_return_if_fail(GNT_IS_WIDGET(obj)); |
| 322 |
314 |
| 323 gnt_widget_hide(obj); |
315 if(!(GNT_WIDGET_FLAGS(obj) & GNT_WIDGET_DESTROYING)) { |
| 324 delwin(obj->window); |
316 GNT_WIDGET_SET_FLAGS(obj, GNT_WIDGET_DESTROYING); |
| 325 if(!(GNT_WIDGET_FLAGS(obj) & GNT_WIDGET_DESTROYING)) |
317 gnt_widget_hide(obj); |
| |
318 delwin(obj->window); |
| 326 g_object_run_dispose(G_OBJECT(obj)); |
319 g_object_run_dispose(G_OBJECT(obj)); |
| |
320 } |
| 327 GNTDEBUG; |
321 GNTDEBUG; |
| 328 } |
322 } |
| 329 |
323 |
| 330 void |
324 void |
| 331 gnt_widget_show(GntWidget *widget) |
325 gnt_widget_show(GntWidget *widget) |
| 397 { |
391 { |
| 398 gboolean ret; |
392 gboolean ret; |
| 399 if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS)) |
393 if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS)) |
| 400 return FALSE; |
394 return FALSE; |
| 401 |
395 |
| 402 if (gnt_bindable_perform_action_key(GNT_BINDABLE(widget), keys)) |
396 if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_DISABLE_ACTIONS) && |
| |
397 gnt_bindable_perform_action_key(GNT_BINDABLE(widget), keys)) |
| 403 return TRUE; |
398 return TRUE; |
| 404 |
399 |
| 405 keys = gnt_bindable_remap_keys(GNT_BINDABLE(widget), keys); |
400 keys = gnt_bindable_remap_keys(GNT_BINDABLE(widget), keys); |
| 406 g_signal_emit(widget, signals[SIG_KEY_PRESSED], 0, keys, &ret); |
401 g_signal_emit(widget, signals[SIG_KEY_PRESSED], 0, keys, &ret); |
| 407 return ret; |
402 return ret; |