diff options
author | sake <sake@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-11-10 23:05:35 +0000 |
---|---|---|
committer | sake <sake@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-11-10 23:05:35 +0000 |
commit | b4b305b8548128090bf12da9528d422faf8afea4 (patch) | |
tree | 8ac062f736c900b9ff1fa9ffa97e3b94fbd0a632 /gtk | |
parent | 5115f42801152916324aeb5fce305f79c53269a5 (diff) |
Make the enable/disable buttons on the coloring rule list follow
the selection. There is a little difference between the behaviour
in GTK1 and GTK2 (As long as either one row or a block of rows with
the same status is selected, GTK1 and GTK2 behave the same way):
GTK1:
- if the last selected row is disabled, grey out the disable button
- if the last selected row is enabled, grey out the enable button
GTK2:
- grey out both buttons when no rule is selected
- grey out the enable button when *all* selected rules are enabled
- grey out the disable button when *all* selected rules are disabled
- leave both buttons active if there is a mix of disabled and enabled
rules
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@23426 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/color_dlg.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/gtk/color_dlg.c b/gtk/color_dlg.c index a594e69e67..0b69874351 100644 --- a/gtk/color_dlg.c +++ b/gtk/color_dlg.c @@ -685,9 +685,9 @@ remember_selected_row(GtkCList *clist, gint row, gint column _U_, button = (GtkWidget *)OBJECT_GET_DATA(clist, COLOR_EDIT_LB); gtk_widget_set_sensitive (button, TRUE); button = (GtkWidget *)OBJECT_GET_DATA(clist, COLOR_ENABLE_LB); - gtk_widget_set_sensitive(button, TRUE); + gtk_widget_set_sensitive(button, colorf->disabled); button = (GtkWidget *)OBJECT_GET_DATA(clist, COLOR_DISABLE_LB); - gtk_widget_set_sensitive(button, TRUE); + gtk_widget_set_sensitive(button, !colorf->disabled); button = (GtkWidget *)OBJECT_GET_DATA(clist, COLOR_DELETE_LB); gtk_widget_set_sensitive(button, TRUE); @@ -699,6 +699,8 @@ struct remember_data gint count; /* count of selected filters */ gboolean first_selected; /* true if the first filter in the list is selected */ gboolean last_selected; /* true if the last filter in the list is selected */ + gboolean all_enabled; /* true if all selected coloring rules are enabled */ + gboolean all_disabled; /* true if all selected coloring rules are disabled */ gpointer color_filters; }; /* called for each selected row in the tree. @@ -712,6 +714,9 @@ static void remember_this_row (GtkTreeModel *model, GtkTreePath *path, GtkTreeIt gtk_tree_model_get(model, iter, 5, &colorf, -1); colorf->selected = TRUE; + data->all_enabled &= (!colorf->disabled); + data->all_disabled &= colorf->disabled; + path_index = gtk_tree_path_get_indices(path); /* not to be freed */ if (path_index == NULL) /* can return NULL according to API doc.*/ { @@ -746,6 +751,7 @@ remember_selected_row(GtkTreeSelection *sel, gpointer color_filters) struct remember_data data; data.first_selected = data.last_selected = FALSE; + data.all_enabled = data.all_disabled = TRUE; data.count = 0; data.color_filters = color_filters; @@ -764,11 +770,11 @@ remember_selected_row(GtkTreeSelection *sel, gpointer color_filters) /* We can enable any number of filters */ button = (GtkWidget *)OBJECT_GET_DATA(color_filters, COLOR_ENABLE_LB); - gtk_widget_set_sensitive (button, TRUE); + gtk_widget_set_sensitive (button, !data.all_enabled); /* We can disable any number of filters */ button = (GtkWidget *)OBJECT_GET_DATA(color_filters, COLOR_DISABLE_LB); - gtk_widget_set_sensitive (button, TRUE); + gtk_widget_set_sensitive (button, !data.all_disabled); /* We can delete any number of filters */ button = (GtkWidget *)OBJECT_GET_DATA(color_filters, COLOR_DELETE_LB); @@ -1035,6 +1041,7 @@ static void color_disable_cb(GtkWidget *widget, gboolean action_disable) { gint filter_number; + GtkWidget *button; GtkWidget * color_filters; color_filter_t *colorf; #if GTK_MAJOR_VERSION < 2 @@ -1067,7 +1074,6 @@ color_disable_cb(GtkWidget *widget, gboolean action_disable) gtk_clist_set_background(GTK_CLIST(color_filters), filter_number, colorf->disabled ? &WHITE : &bg); } - #else model = gtk_tree_view_get_model(GTK_TREE_VIEW(color_filters)); gtk_tree_model_iter_nth_child(model, &iter, NULL, filter_number); @@ -1079,6 +1085,10 @@ color_disable_cb(GtkWidget *widget, gboolean action_disable) } #endif } + button = (GtkWidget *)OBJECT_GET_DATA(color_filters, COLOR_ENABLE_LB); + gtk_widget_set_sensitive(button, action_disable); + button = (GtkWidget *)OBJECT_GET_DATA(color_filters, COLOR_DISABLE_LB); + gtk_widget_set_sensitive(button, !action_disable); } /* Delete a single color filter from the list and elsewhere. */ |