We need to catch a "window delete" event for the preferences dialog box
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 10 Sep 1999 06:53:32 +0000 (06:53 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 10 Sep 1999 06:53:32 +0000 (06:53 +0000)
- that event happens if, say, you nuke the dialog box from a window
manager - and call "delete" routines for each of the preferences tabs,
so that, for preferences tabs that include list widgets, we can set a
flag on the preferences tab widget telling the selection callback for
the list widget that the buttons it would normally set the sensitivity
of, based on whether any row in the list is selected or not, have Joined
the Choir Invisible, and therefore that we shouldn't change their
sensitivity because GTK+ will whine at us if we do, just as is the case
if we press the "OK" or "Cancel" button (which also cause the window to
go away).

Can we just do this in the "window delete" handler?  I.e., does that get
called if we explicitly destroy the widget?  Or should we catch a
"destroy" event instead?

(There must be a better way to do this....)

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@647 f5534014-38df-0310-8fa8-9805f1628bb7

column.c
column.h
gtk/filter_prefs.c
gtk/filter_prefs.h
gtk/prefs_dlg.c
gtk/print_prefs.c
gtk/print_prefs.h

index 1e5436420091718e43df8cb137dc0a77177e9c9e..94c686d2d05c443a2d855af65e7b62cc01c461b4 100644 (file)
--- a/column.c
+++ b/column.c
@@ -1,7 +1,7 @@
 /* column.c
  * Routines for handling column preferences
  *
- * $Id: column.c,v 1.21 1999/07/28 03:47:03 guy Exp $
+ * $Id: column.c,v 1.22 1999/09/10 06:53:23 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -726,7 +726,7 @@ column_set_fmt_cb(GtkWidget *w, gpointer data) {
 void
 column_prefs_ok(GtkWidget *w) {
 
-  column_prefs_cancel(w);
+  column_prefs_delete(w);
 }
 
 void
@@ -735,6 +735,12 @@ column_prefs_save(GtkWidget *w) {
 
 void
 column_prefs_cancel(GtkWidget *w) {
+
+  column_prefs_delete(w);
+}
+
+void
+column_prefs_delete(GtkWidget *w) {
  
   /* Let the list cb know we're about to destroy the widget tree, so it */
   /* doesn't operate on widgets that don't exist. */  
index 06647e7498628e1e2ec3fb40902397b6e64d9be4..21ddbd56edfc4724ed2f9047f143df2bb5121f44 100644 (file)
--- a/column.h
+++ b/column.h
@@ -1,7 +1,7 @@
 /* column.h
  * Definitions for column handling routines
  *
- * $Id: column.h,v 1.4 1999/07/28 03:29:00 guy Exp $
+ * $Id: column.h,v 1.5 1999/09/10 06:53:23 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -47,5 +47,6 @@ GtkWidget           *column_prefs_show(void);
 void                 column_prefs_ok(GtkWidget *);
 void                 column_prefs_save(GtkWidget *);
 void                 column_prefs_cancel(GtkWidget *);
+void                 column_prefs_delete(GtkWidget *);
 
 #endif /* column.h */
index 4a982e8bf9f7a9d864c560ecfcd4b4a4ec6d0db2..75583f2688b3e2d657f87ea077ec7acf275bf5f9 100644 (file)
@@ -1,7 +1,7 @@
 /* filter_prefs.c
  * Dialog boxes for preferences for filter sets
  *
- * $Id: filter_prefs.c,v 1.3 1999/09/10 06:01:02 guy Exp $
+ * $Id: filter_prefs.c,v 1.4 1999/09/10 06:53:30 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -420,7 +420,7 @@ filter_prefs_ok(GtkWidget *w) {
     }
   }
 
-  filter_prefs_cancel(w);
+  filter_prefs_delete(w);
 }
 
 void
@@ -459,6 +459,12 @@ filter_prefs_save(GtkWidget *w) {
 
 void
 filter_prefs_cancel(GtkWidget *w) {
+
+  filter_prefs_delete(w);
+}
+
+void
+filter_prefs_delete(GtkWidget *w) {
  
   /* Let the list cb know we're about to destroy the widget tree, so it */
   /* doesn't operate on widgets that don't exist. */  
index 5472691da64f7ff5099cc896ec8e0285210d4362..b55778ba6a32c9338f746e4860b1ea734b55775f 100644 (file)
@@ -1,7 +1,7 @@
 /* filter_prefs.h
  * Definitions for packet filter preferences window
  *
- * $Id: filter_prefs.h,v 1.2 1999/09/09 04:25:48 guy Exp $
+ * $Id: filter_prefs.h,v 1.3 1999/09/10 06:53:31 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -35,5 +35,6 @@ void       filter_sel_del_cb(GtkWidget *, gpointer);
 void       filter_prefs_ok(GtkWidget *);
 void       filter_prefs_save(GtkWidget *);
 void       filter_prefs_cancel(GtkWidget *);
+void       filter_prefs_delete(GtkWidget *);
 
 #endif /* filter.h */
index a26cf5ba871b52ae32da52832c89ee8c75e7ef23..40e9891f7b37f3554c1b34fece4fc9f89687db56 100644 (file)
@@ -1,7 +1,7 @@
 /* prefs_dlg.c
  * Routines for handling preferences
  *
- * $Id: prefs_dlg.c,v 1.1 1999/09/09 03:32:03 gram Exp $
+ * $Id: prefs_dlg.c,v 1.2 1999/09/10 06:53:31 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
 
 e_prefs prefs;
 
-static void   prefs_main_ok_cb(GtkWidget *, gpointer);
-static void   prefs_main_save_cb(GtkWidget *, gpointer);
-static void   prefs_main_cancel_cb(GtkWidget *, gpointer);
+static void     prefs_main_ok_cb(GtkWidget *, gpointer);
+static void     prefs_main_save_cb(GtkWidget *, gpointer);
+static void     prefs_main_cancel_cb(GtkWidget *, gpointer);
+static gboolean prefs_main_delete_cb(GtkWidget *, gpointer);
 
 
 #define E_PRINT_PAGE_KEY  "printer_options_page"
@@ -79,6 +80,8 @@ prefs_cb(GtkWidget *w, gpointer sp) {
 
   prefs_w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title(GTK_WINDOW(prefs_w), "Ethereal: Preferences");
+  gtk_signal_connect(GTK_OBJECT(prefs_w), "delete-event",
+    GTK_SIGNAL_FUNC(prefs_main_delete_cb), NULL);
   
   /* Container for each row of widgets */
   main_vb = gtk_vbox_new(FALSE, 5);
@@ -160,7 +163,7 @@ prefs_cb(GtkWidget *w, gpointer sp) {
   gtk_widget_show(prefs_w);
 }
 
-void
+static void
 prefs_main_ok_cb(GtkWidget *ok_bt, gpointer parent_w)
 {
   printer_prefs_ok(gtk_object_get_data(GTK_OBJECT(parent_w), E_PRINT_PAGE_KEY));
@@ -169,7 +172,7 @@ prefs_main_ok_cb(GtkWidget *ok_bt, gpointer parent_w)
   gtk_widget_destroy(GTK_WIDGET(parent_w));
 }
 
-void
+static void
 prefs_main_save_cb(GtkWidget *save_bt, gpointer parent_w)
 {
   printer_prefs_save(gtk_object_get_data(GTK_OBJECT(parent_w), E_PRINT_PAGE_KEY));
@@ -178,7 +181,7 @@ prefs_main_save_cb(GtkWidget *save_bt, gpointer parent_w)
   write_prefs();
 }
 
-void
+static void
 prefs_main_cancel_cb(GtkWidget *cancel_bt, gpointer parent_w)
 {
   printer_prefs_cancel(gtk_object_get_data(GTK_OBJECT(parent_w), E_PRINT_PAGE_KEY));
@@ -187,3 +190,11 @@ prefs_main_cancel_cb(GtkWidget *cancel_bt, gpointer parent_w)
   gtk_widget_destroy(GTK_WIDGET(parent_w));
 }
 
+static gboolean
+prefs_main_delete_cb(GtkWidget *prefs_w, gpointer dummy)
+{
+  printer_prefs_delete(gtk_object_get_data(GTK_OBJECT(prefs_w), E_PRINT_PAGE_KEY));
+  filter_prefs_delete(gtk_object_get_data(GTK_OBJECT(prefs_w), E_FILTER_PAGE_KEY));
+  column_prefs_delete(gtk_object_get_data(GTK_OBJECT(prefs_w), E_COLUMN_PAGE_KEY));
+  return FALSE;
+}
index 72617264620e1b28f7f3e9517583264e6af1a8d5..e05f41f9126cdf25b2e45358f65a77cc542c524f 100644 (file)
@@ -1,7 +1,7 @@
 /* print_prefs.c
  * Dialog boxes for preferences for printing
  *
- * $Id: print_prefs.c,v 1.3 1999/09/09 04:25:48 guy Exp $
+ * $Id: print_prefs.c,v 1.4 1999/09/10 06:53:31 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -33,6 +33,8 @@
 #include "globals.h"
 #endif
 
+#include "print_prefs.h"
+
 #ifndef __KEYS_H__
 #include "keys.h"
 #endif
@@ -208,6 +210,8 @@ printer_prefs_ok(GtkWidget *w)
        prefs.pr_file =  
                g_strdup(gtk_entry_get_text(GTK_ENTRY(gtk_object_get_data(GTK_OBJECT(w),
     PRINT_FILE_TE_KEY))));
+
+       printer_prefs_delete(w);
 }
 
 void
@@ -218,30 +222,35 @@ printer_prefs_save(GtkWidget *w)
 
 void
 printer_prefs_cancel(GtkWidget *w)
+{
+       printer_prefs_delete(w);
+}
+
+void
+printer_prefs_delete(GtkWidget *w)
 {
 }
 
 static void
 printer_opts_toggle_format(GtkWidget *widget, gpointer data)
 {
-               if (GTK_TOGGLE_BUTTON (widget)->active) {
-                       prefs.pr_format = PR_FMT_PS;
-                       /* toggle file/cmd */
-               }
-               else {
-                       prefs.pr_format = PR_FMT_TEXT;
-                       /* toggle file/cmd */
-               }
+       if (GTK_TOGGLE_BUTTON (widget)->active) {
+               prefs.pr_format = PR_FMT_PS;
+               /* toggle file/cmd */
+       }
+       else {
+               prefs.pr_format = PR_FMT_TEXT;
+               /* toggle file/cmd */
+       }
 }
 
 static void
 printer_opts_toggle_dest(GtkWidget *widget, gpointer data)
 {
-               if (GTK_TOGGLE_BUTTON (widget)->active) {
-                       prefs.pr_dest = PR_DEST_FILE;
-               }
-               else {
-                       prefs.pr_dest = PR_DEST_CMD;
-               }
+       if (GTK_TOGGLE_BUTTON (widget)->active) {
+               prefs.pr_dest = PR_DEST_FILE;
+       }
+       else {
+               prefs.pr_dest = PR_DEST_CMD;
+       }
 }
-
index 3cc8a0fbeebdbfe8b105e791fba1716a65a47595..5291f121d6fb236f189a08c1535f4876c303be45 100644 (file)
@@ -1,7 +1,7 @@
 /* print_prefs.h
  * Definitions for print preferences window
  *
- * $Id: print_prefs.h,v 1.2 1999/09/09 04:25:48 guy Exp $
+ * $Id: print_prefs.h,v 1.3 1999/09/10 06:53:32 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -24,7 +24,8 @@
  */
 
 
-GtkWidget *printer_prefs_show();
+GtkWidget *printer_prefs_show(void);
 void printer_prefs_ok(GtkWidget *w);
 void printer_prefs_save(GtkWidget *w);
 void printer_prefs_cancel(GtkWidget *w);
+void printer_prefs_delete(GtkWidget *w);