aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>1999-09-10 06:53:32 +0000
committerGuy Harris <guy@alum.mit.edu>1999-09-10 06:53:32 +0000
commit046c060f989cdd51791c2112c1103f858ceeadf4 (patch)
tree2ad3d562ab8c51ee36eec5f31f5bf13f3180febb
parent7e1ce9e12207a0601d329e7147a5bca1eb5a22b6 (diff)
We need to catch a "window delete" event for the preferences dialog box
- 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....) svn path=/trunk/; revision=647
-rw-r--r--column.c10
-rw-r--r--column.h3
-rw-r--r--gtk/filter_prefs.c10
-rw-r--r--gtk/filter_prefs.h3
-rw-r--r--gtk/prefs_dlg.c25
-rw-r--r--gtk/print_prefs.c41
-rw-r--r--gtk/print_prefs.h5
7 files changed, 66 insertions, 31 deletions
diff --git a/column.c b/column.c
index 1e54364200..94c686d2d0 100644
--- 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. */
diff --git a/column.h b/column.h
index 06647e7498..21ddbd56ed 100644
--- 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 */
diff --git a/gtk/filter_prefs.c b/gtk/filter_prefs.c
index 4a982e8bf9..75583f2688 100644
--- a/gtk/filter_prefs.c
+++ b/gtk/filter_prefs.c
@@ -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. */
diff --git a/gtk/filter_prefs.h b/gtk/filter_prefs.h
index 5472691da6..b55778ba6a 100644
--- a/gtk/filter_prefs.h
+++ b/gtk/filter_prefs.h
@@ -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 */
diff --git a/gtk/prefs_dlg.c b/gtk/prefs_dlg.c
index a26cf5ba87..40e9891f7b 100644
--- a/gtk/prefs_dlg.c
+++ b/gtk/prefs_dlg.c
@@ -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>
@@ -56,9 +56,10 @@
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;
+}
diff --git a/gtk/print_prefs.c b/gtk/print_prefs.c
index 7261726462..e05f41f912 100644
--- a/gtk/print_prefs.c
+++ b/gtk/print_prefs.c
@@ -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
@@ -219,29 +223,34 @@ 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;
+ }
}
-
diff --git a/gtk/print_prefs.h b/gtk/print_prefs.h
index 3cc8a0fbee..5291f121d6 100644
--- a/gtk/print_prefs.h
+++ b/gtk/print_prefs.h
@@ -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);