finch/libgnt/gntwidget.c

branch
soc.2007.finchfeat
changeset 19307
0027732ddb26
parent 18832
177a16b4b9f3
child 19859
71d37b57eff2
--- a/finch/libgnt/gntwidget.c	Thu Jul 19 10:35:11 2007 +0000
+++ b/finch/libgnt/gntwidget.c	Sun Jul 22 01:28:19 2007 +0000
@@ -74,15 +74,7 @@
 gnt_widget_dispose(GObject *obj)
 {
 	GntWidget *self = GNT_WIDGET(obj);
-
-	if(!(GNT_WIDGET_FLAGS(self) & GNT_WIDGET_DESTROYING)) {
-		GNT_WIDGET_SET_FLAGS(self, GNT_WIDGET_DESTROYING);
-
-		g_signal_emit(self, signals[SIG_DESTROY], 0);
-
-		GNT_WIDGET_UNSET_FLAGS(self, GNT_WIDGET_DESTROYING);
-	}
-
+	g_signal_emit(self, signals[SIG_DESTROY], 0);
 	parent_class->dispose(obj);
 	GNTDEBUG;
 }
@@ -320,10 +312,12 @@
 {
 	g_return_if_fail(GNT_IS_WIDGET(obj));
 
-	gnt_widget_hide(obj);
-	delwin(obj->window);
-	if(!(GNT_WIDGET_FLAGS(obj) & GNT_WIDGET_DESTROYING))
+	if(!(GNT_WIDGET_FLAGS(obj) & GNT_WIDGET_DESTROYING)) {
+		GNT_WIDGET_SET_FLAGS(obj, GNT_WIDGET_DESTROYING);
+		gnt_widget_hide(obj);
+		delwin(obj->window);
 		g_object_run_dispose(G_OBJECT(obj));
+	}
 	GNTDEBUG;
 }
 
@@ -399,7 +393,8 @@
 	if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS))
 		return FALSE;
 
-	if (gnt_bindable_perform_action_key(GNT_BINDABLE(widget), keys))
+	if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_DISABLE_ACTIONS) &&
+			gnt_bindable_perform_action_key(GNT_BINDABLE(widget), keys))
 		return TRUE;
 
 	keys = gnt_bindable_remap_keys(GNT_BINDABLE(widget), keys);

mercurial