[Gnucash-changes] Look for the window manager deletion signal and clean up the dialog.

David Hampton hampton at cvs.gnucash.org
Tue Jul 5 21:12:24 EDT 2005


Log Message:
-----------
Look for the window manager deletion signal and clean up the
dialog.

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash/src/gnome-utils:
        dialog-query-list.c

Revision Data
-------------
Index: dialog-query-list.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/dialog-query-list.c,v
retrieving revision 1.3.2.4
retrieving revision 1.3.2.5
diff -Lsrc/gnome-utils/dialog-query-list.c -Lsrc/gnome-utils/dialog-query-list.c -u -r1.3.2.4 -r1.3.2.5
--- src/gnome-utils/dialog-query-list.c
+++ src/gnome-utils/dialog-query-list.c
@@ -120,13 +120,31 @@
   gnc_dialog_query_run_callback (dql->buttons, item, dql);
 }
 
+static int
+gnc_dialog_query_list_delete_cb (GtkDialog *dialog, GdkEvent  *event, DialogQueryList *dql)
+{
+  g_return_val_if_fail (dql, TRUE);
+
+  gnc_unregister_gui_component (dql->component_id);
+
+  /* XXX: Clear/destroy the param_list? */  
+
+  /* destroy the book list */
+  dql_clear_booklist (dql);
+
+  /* Destroy and exit */
+  gtk_widget_destroy(dql->dialog);
+  g_free (dql);
+  return FALSE;
+}
+
 static void
 close_handler (gpointer data)
 {
   DialogQueryList * dql = data;
 
   g_return_if_fail (dql);
-  gtk_widget_destroy (dql->dialog);
+  gnc_dialog_query_list_delete_cb (GTK_DIALOG(dql->dialog), NULL, dql);
 }
 
 static void
@@ -150,23 +168,6 @@
   }
 }
 
-static int
-gnc_dialog_query_list_close_cb (GtkDialog *dialog, DialogQueryList *dql)
-{
-  g_return_val_if_fail (dql, TRUE);
-
-  gnc_unregister_gui_component (dql->component_id);
-
-  /* XXX: Clear/destroy the param_list? */  
-
-  /* destroy the book list */
-  dql_clear_booklist (dql);
-
-  /* Destroy and exit */
-  g_free (dql);
-  return FALSE;
-}
-
 static void
 gnc_dialog_query_list_close (GtkButton *button, DialogQueryList *dql)
 {
@@ -212,8 +213,8 @@
 		    G_CALLBACK (gnc_dialog_query_list_close), dql);
 
   /* connect to the cleanup */
-  g_signal_connect (G_OBJECT (dql->dialog), "close",
-		    G_CALLBACK (gnc_dialog_query_list_close_cb), dql);
+  g_signal_connect (G_OBJECT (dql->dialog), "delete_event",
+		    G_CALLBACK (gnc_dialog_query_list_delete_cb), dql);
 
 
   /* register ourselves */


More information about the gnucash-changes mailing list