aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/color_dlg.c
diff options
context:
space:
mode:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2004-07-17 10:09:12 +0000
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2004-07-17 10:09:12 +0000
commitc49940118169b8a7c7052f4a494a74059f8010ee (patch)
treedaaa357e70c29514c6662a51194c01ce10d977f8 /gtk/color_dlg.c
parent9d5df14fdd5e08077ff703bda50a9f8aefca434a (diff)
From Martin Mathieson: if you create a new filter and cancel the "Edit
Color Filter" dialog, remove the new filter from the list. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@11389 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'gtk/color_dlg.c')
-rw-r--r--gtk/color_dlg.c43
1 files changed, 32 insertions, 11 deletions
diff --git a/gtk/color_dlg.c b/gtk/color_dlg.c
index debe764f24..00faa09a45 100644
--- a/gtk/color_dlg.c
+++ b/gtk/color_dlg.c
@@ -74,9 +74,11 @@ static void color_apply_cb(GtkButton *button, gpointer user_data);
static void color_clear_cb(GtkWidget *button, gpointer user_data);
static void color_import_cb(GtkButton *button, gpointer user_data );
-static void edit_color_filter_dialog_new(GtkWidget *color_filters,
- GtkWidget **colorize_filter_name,
- GtkWidget **colorize_filter_text);
+static void edit_color_filter_dialog(GtkWidget *color_filters,
+ GtkWidget **colorize_filter_name,
+ GtkWidget **colorize_filter_text,
+ guchar is_new_filter);
+
#if GTK_MAJOR_VERSION < 2
static void edit_color_filter_destroy_cb(GtkObject *object, gpointer user_data);
#else
@@ -85,6 +87,7 @@ static void edit_color_filter_destroy_cb(GObject *object, gpointer user_data);
static void edit_color_filter_fg_cb(GtkButton *button, gpointer user_data);
static void edit_color_filter_bg_cb(GtkButton *button, gpointer user_data);
static void edit_color_filter_ok_cb(GtkButton *button, gpointer user_data);
+static void edit_new_color_filter_cancel_cb(GtkButton *button, gpointer user_data);
static GtkWidget* color_sel_win_new(color_filter_t *colorf, gboolean);
static void color_sel_ok_cb(GtkButton *button, gpointer user_data);
@@ -914,12 +917,13 @@ create_new_color_filter(GtkButton *button, char *filter)
color_add_colorf(color_filters, colorf);
- edit_color_filter_dialog_new(color_filters, &filt_name_entry,
- &filt_text_entry);
+ edit_color_filter_dialog(color_filters, &filt_name_entry, &filt_text_entry, TRUE);
/* Show the (in)validity of the default filter string */
filter_te_syntax_check_cb(filt_text_entry);
+
+
#if GTK_MAJOR_VERSION >= 2
gtk_widget_grab_focus(color_filters);
#endif
@@ -941,8 +945,7 @@ color_props_cb(GtkButton *button, gpointer user_data _U_)
color_filters = (GtkWidget *)OBJECT_GET_DATA(button, COLOR_FILTERS_CL);
g_assert(row_selected != -1);
- edit_color_filter_dialog_new(color_filters, &filt_name_entry,
- &filt_text_entry);
+ edit_color_filter_dialog(color_filters, &filt_name_entry, &filt_text_entry, FALSE);
}
/* Delete a color from the list. */
@@ -1122,9 +1125,10 @@ color_apply_cb(GtkButton *button _U_, gpointer user_data _U_)
/* Create an "Edit Color Filter" dialog for a given color filter, and
associate it with that color filter. */
static void
-edit_color_filter_dialog_new(GtkWidget *color_filters,
- GtkWidget **colorize_filter_name,
- GtkWidget **colorize_filter_text)
+edit_color_filter_dialog(GtkWidget *color_filters,
+ GtkWidget **colorize_filter_name,
+ GtkWidget **colorize_filter_text,
+ guchar is_new_filter)
{
color_filter_t *colorf;
GtkWidget *edit_dialog;
@@ -1266,7 +1270,6 @@ edit_color_filter_dialog_new(GtkWidget *color_filters,
gtk_tooltips_set_tip (tooltips, edit_color_filter_ok, ("Accept filter color change"), NULL);
edit_color_filter_cancel = OBJECT_GET_DATA(bbox, GTK_STOCK_CANCEL);
- window_set_cancel_button(edit_dialog, edit_color_filter_cancel, window_cancel_button_cb);
gtk_tooltips_set_tip (tooltips, edit_color_filter_cancel, ("Reject filter color change"), NULL);
gtk_widget_grab_default(edit_color_filter_ok);
@@ -1282,6 +1285,16 @@ edit_color_filter_dialog_new(GtkWidget *color_filters,
OBJECT_SET_DATA(edit_color_filter_ok, COLOR_FILTER, colorf);
SIGNAL_CONNECT(edit_color_filter_ok, "clicked", edit_color_filter_ok_cb, edit_dialog);
+ /* set callback to delete new filters if cancel chosen */
+ if (is_new_filter)
+ {
+ OBJECT_SET_DATA(edit_color_filter_cancel, COLOR_FILTERS_CL, color_filters);
+ SIGNAL_CONNECT(edit_color_filter_cancel, "clicked",
+ edit_new_color_filter_cancel_cb, edit_dialog);
+ }
+ /* escape will select cancel */
+ window_set_cancel_button(edit_dialog, edit_color_filter_cancel, window_cancel_button_cb);
+
SIGNAL_CONNECT(edit_dialog, "delete_event", window_delete_event_cb, NULL);
gtk_widget_show_all(edit_dialog);
@@ -1449,6 +1462,14 @@ edit_color_filter_ok_cb (GtkButton *button,
}
}
+/* reject new color filter addition */
+static void
+edit_new_color_filter_cancel_cb(GtkButton *button, gpointer user_data _U_)
+{
+ /* Delete the entry. N.B. this already destroys the edit_dialog window. */
+ color_delete(num_of_filters-1, (GtkWidget*)OBJECT_GET_DATA(button, COLOR_FILTERS_CL));
+}
+
static GtkWidget*
color_sel_win_new(color_filter_t *colorf, gboolean is_bg)
{