diff --git a/gtk/gui_prefs.c b/gtk/gui_prefs.c index c6af8bd904..a8db02a28a 100644 --- a/gtk/gui_prefs.c +++ b/gtk/gui_prefs.c @@ -1,7 +1,7 @@ /* gui_prefs.c * Dialog box for GUI preferences * - * $Id: gui_prefs.c,v 1.20 2000/10/09 06:28:49 guy Exp $ + * $Id: gui_prefs.c,v 1.21 2000/10/09 06:38:36 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -320,9 +320,10 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs) font_name = g_strdup(gtk_font_selection_dialog_get_font_name( GTK_FONT_SELECTION_DIALOG(fs))); if (font_name == NULL) { - /* No font was selected; let the user know, and don't let - them accept that non-font. */ - simple_dialog(ESD_TYPE_CRIT, NULL, + /* No font was selected; let the user know, but don't + tear down the font selection dialog, so they can + try again. */ + simple_dialog(ESD_TYPE_CRIT | ESD_TYPE_MODAL, NULL, "You have not selected a font."); return; } @@ -336,7 +337,7 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs) /* Oops, that font didn't work. Tell the user, but don't tear down the font selection dialog, so that they can try again. */ - simple_dialog(ESD_TYPE_CRIT, NULL, + simple_dialog(ESD_TYPE_CRIT | ESD_TYPE_MODAL, NULL, "The font you selected cannot be loaded."); g_free(font_name); @@ -349,7 +350,7 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs) /* Oops, that font didn't work. Tell the user, but don't tear down the font selection dialog, so that they can try again. */ - simple_dialog(ESD_TYPE_CRIT, NULL, + simple_dialog(ESD_TYPE_CRIT | ESD_TYPE_MODAL, NULL, "The font you selected doesn't have a boldface version."); g_free(font_name); diff --git a/gtk/simple_dialog.c b/gtk/simple_dialog.c index 61269534a2..d0377422d0 100644 --- a/gtk/simple_dialog.c +++ b/gtk/simple_dialog.c @@ -1,7 +1,7 @@ /* simple_dialog.c * Simple message dialog box routines. * - * $Id: simple_dialog.c,v 1.6 2000/08/23 06:56:31 guy Exp $ + * $Id: simple_dialog.c,v 1.7 2000/10/09 06:38:36 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -76,7 +76,7 @@ simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) { gchar **icon; /* Main window */ - switch (type) { + switch (type & ~ESD_TYPE_MODAL) { case ESD_TYPE_WARN : icon = icon_excl_xpm; win = dlg_window_new("Ethereal: Warning"); @@ -92,6 +92,9 @@ simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) { break; } + if (type & ESD_TYPE_MODAL) + gtk_window_set_modal(GTK_WINDOW(win), TRUE); + gtk_container_border_width(GTK_CONTAINER(win), 7); gtk_object_set_data(GTK_OBJECT(win), bm_key, btn_mask); diff --git a/simple_dialog.h b/simple_dialog.h index 9afdf1f1e5..f952c19940 100644 --- a/simple_dialog.h +++ b/simple_dialog.h @@ -2,7 +2,7 @@ * Definitions for dialog box routines with toolkit-independent APIs but * toolkit-dependent implementations. * - * $Id: simple_dialog.h,v 1.1 2000/01/03 06:59:09 guy Exp $ + * $Id: simple_dialog.h,v 1.2 2000/10/09 06:38:34 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -32,9 +32,13 @@ extern "C" { #endif /* __cplusplus */ /* Dialog type. */ -#define ESD_TYPE_INFO 0 -#define ESD_TYPE_WARN 1 -#define ESD_TYPE_CRIT 2 +#define ESD_TYPE_INFO 0x00 +#define ESD_TYPE_WARN 0x01 +#define ESD_TYPE_CRIT 0x02 + +/* Flag to be ORed with the dialog type, to specify that the dialog is + to be modal. */ +#define ESD_TYPE_MODAL 0x04 /* Which buttons to display. */ #define ESD_BTN_OK 0