diff options
author | Irene RĂ¼ngeler <I.Ruengeler@fh-muenster.de> | 2013-04-11 12:08:48 +0000 |
---|---|---|
committer | Irene RĂ¼ngeler <I.Ruengeler@fh-muenster.de> | 2013-04-11 12:08:48 +0000 |
commit | 799985b0f987d6ec4615f7efc7f8fef2b01bd2d9 (patch) | |
tree | 9a387511f02a933d0b66574bdd064f621f1ad3e2 /ui | |
parent | 77a71eb93638d6e3658cc60cfe5b7b3736d7cd71 (diff) |
Don't select the 'any' device (in Linux), when 'capture all' is selected.
svn path=/trunk/; revision=48815
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gtk/capture_dlg.c | 32 | ||||
-rw-r--r-- | ui/gtk/main_welcome.c | 10 |
2 files changed, 32 insertions, 10 deletions
diff --git a/ui/gtk/capture_dlg.c b/ui/gtk/capture_dlg.c index 50533f68ab..2cf805c1ba 100644 --- a/ui/gtk/capture_dlg.c +++ b/ui/gtk/capture_dlg.c @@ -3135,28 +3135,39 @@ static void capture_all_cb(GtkToggleButton *button, gpointer d _U_) GtkTreeView *if_cb; GtkTreeModel *model; GtkWidget *pcap_ng_cb; - gboolean enabled = FALSE, capture_set = FALSE; + gchar *interface = NULL; + gboolean enabled = FALSE, capture_set = FALSE, pseudo = FALSE; + guint16 num_temp; if (gtk_toggle_button_get_active(button)) enabled = TRUE; if_cb = (GtkTreeView *) g_object_get_data(G_OBJECT(cap_open_w), E_CAP_IFACE_KEY); model = gtk_tree_view_get_model(if_cb); pcap_ng_cb = (GtkWidget *) g_object_get_data(G_OBJECT(cap_open_w), E_CAP_PCAP_NG_KEY); + num_temp = global_capture_opts.num_selected++; if (gtk_tree_model_get_iter_first(model, &iter)) { do { - gtk_tree_model_get (model, &iter, CAPTURE, &capture_set, -1); - if (!capture_set && enabled) { - global_capture_opts.num_selected++; - } else if (capture_set && !enabled) { - global_capture_opts.num_selected--; + gtk_tree_model_get (model, &iter, CAPTURE, &capture_set, IFACE_HIDDEN_NAME, &interface, -1); + if (strcmp(interface, "any") == 0) { + pseudo = TRUE; + } + if (!capture_set && enabled && !pseudo) { + num_temp++; + } else if (capture_set && (!enabled || (enabled && pseudo))) { + num_temp--; } - gtk_list_store_set(GTK_LIST_STORE(model), &iter, CAPTURE, enabled, -1); + if (!pseudo) { + gtk_list_store_set(GTK_LIST_STORE(model), &iter, CAPTURE, enabled, -1); + } else { + gtk_list_store_set(GTK_LIST_STORE(model), &iter, CAPTURE, FALSE, -1); + } + pseudo = FALSE; } while (gtk_tree_model_iter_next(model, &iter)); } - if (global_capture_opts.num_selected >= 2) { + if (num_temp >= 2) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pcap_ng_cb), TRUE); gtk_widget_set_sensitive(pcap_ng_cb, FALSE); - } else if (global_capture_opts.num_selected <= 1) { + } else if (num_temp <= 1) { gtk_widget_set_sensitive(pcap_ng_cb, TRUE); } if (interfaces_dialog_window_present()) { @@ -3165,6 +3176,9 @@ static void capture_all_cb(GtkToggleButton *button, gpointer d _U_) if (get_welcome_window() != NULL) { change_selection_for_all(enabled); } + if (global_capture_opts.num_selected != num_temp) { + global_capture_opts.num_selected = num_temp; + } if (global_capture_opts.num_selected > 0) { gtk_widget_set_sensitive(ok_bt, TRUE); #if defined(HAVE_PCAP_OPEN_DEAD) && defined(HAVE_BPF_IMAGE) diff --git a/ui/gtk/main_welcome.c b/ui/gtk/main_welcome.c index e880a7e477..ad82a26087 100644 --- a/ui/gtk/main_welcome.c +++ b/ui/gtk/main_welcome.c @@ -794,9 +794,17 @@ void change_interface_selection(gchar* name, gboolean activate) void change_selection_for_all(gboolean enable) { guint i; + gboolean all = FALSE; + interface_t device; for (i = 0; i < global_capture_opts.all_ifaces->len; i++) { - change_interface_selection(g_array_index(global_capture_opts.all_ifaces, interface_t, i).name, enable); + device = g_array_index(global_capture_opts.all_ifaces, interface_t, i); + all = strcmp(device.name, "any"); + if (all) { + change_interface_selection(device.name, enable); + } else { + change_interface_selection(device.name, FALSE); + } } } #endif |