aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorsake <sake@f5534014-38df-0310-8fa8-9805f1628bb7>2007-11-10 23:05:35 +0000
committersake <sake@f5534014-38df-0310-8fa8-9805f1628bb7>2007-11-10 23:05:35 +0000
commitb4b305b8548128090bf12da9528d422faf8afea4 (patch)
tree8ac062f736c900b9ff1fa9ffa97e3b94fbd0a632 /gtk
parent5115f42801152916324aeb5fce305f79c53269a5 (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.c20
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. */