aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/main_window_slots.cpp
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2016-01-18 16:02:48 -0800
committerGerald Combs <gerald@wireshark.org>2016-01-27 16:13:19 +0000
commite57bb1919c80a2d1c245d539f6450b9b9defcb68 (patch)
tree0b4ab4fb919af94d7c92e313b2331894457b955f /ui/qt/main_window_slots.cpp
parent841f636dc075a306cd048e7f954b8cba5fa6960c (diff)
Make Qt UI capture filter behavior more closely match the GTK+ UI.
If the user enters a capture filter in the Capture Interfaces dialog and presses "Start", make sure we copy the filter to the main welcome screen. Back out capture filter code from g0ce9ac4. Leave out the code that set the global capture filter. Move the code that set individual capture filters to the welcome screen. Fix multiple interface selection in the welcome screen. Rename allFilterComboBox in the capture interfaces dialog to captureFilterComboBox to match the main welcome screen. If the user starts typing in captureFilterComboBox, make sure the "Capture Filter" column is visible. Update the "Capture Filter" column as the user types. Conversely, if the user edits the "Capture Filter" column, update captureFilterComboBox accordingly. If we're editing a per-interface filter make sure we commit its contents before starting capture. Map our device index directly to each tree item instead of using a separate map which will no longer be valid any time our sort order changes (which we do right away in our constructor). Don't set prefs.capture_devices_filter in the Qt UI. The GTK+ UI doesn't and doing so can lead to surprising behavior. Note that it's mostly unused. Note that we don't multiple selected filters very well. Ping-Bug: 11886 Change-Id: I3c052f4f464411e2fb8fb7d96b218e1ce2bac3fd Reviewed-on: https://code.wireshark.org/review/13410 Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'ui/qt/main_window_slots.cpp')
-rw-r--r--ui/qt/main_window_slots.cpp38
1 files changed, 6 insertions, 32 deletions
diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp
index 56bbec4c30..1881350e41 100644
--- a/ui/qt/main_window_slots.cpp
+++ b/ui/qt/main_window_slots.cpp
@@ -838,36 +838,6 @@ void MainWindow::startCapture() {
/* XXX - we might need to init other pref data as well... */
- // Set our cfilters.
- QString capture_filter = main_welcome_->captureFilter();
- g_free(global_capture_opts.default_options.cfilter);
- if (capture_filter.isEmpty()) {
- global_capture_opts.default_options.cfilter = NULL;
- } else {
- global_capture_opts.default_options.cfilter = qstring_strdup(capture_filter);
- }
-
- if (global_capture_opts.num_selected > 0) {
- interface_t device;
-
- for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- if (!device.selected) {
- continue;
- }
- // if (device.active_dlt == -1) {
- // simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "The link type of interface %s was not specified.", device.name);
- // continue; /* Programming error: somehow managed to select an "unsupported" entry */
- // }
- g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_free(device.cfilter);
- device.cfilter = qstring_strdup(capture_filter);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
- // update_filter_string(device.name, filter_text);
- }
- }
-
-
/* XXX - can this ever happen? */
if (cap_session_.state != CAPTURE_STOPPED)
return;
@@ -1418,9 +1388,12 @@ void MainWindow::captureFilterSyntaxChanged(bool valid)
interfaceSelectionChanged();
}
-void MainWindow::startInterfaceCapture(bool valid)
+void MainWindow::startInterfaceCapture(bool valid, const QString capture_filter)
{
capture_filter_valid_ = valid;
+ main_welcome_->setCaptureFilter(capture_filter);
+ // The interface tree will update the selected interfaces via its timer
+ // so no need to do anything here.
startCapture();
}
@@ -3608,7 +3581,8 @@ void MainWindow::on_actionStatisticsProtocolHierarchy_triggered()
#ifdef HAVE_LIBPCAP
void MainWindow::on_actionCaptureOptions_triggered()
{
- connect(&capture_interfaces_dialog_, SIGNAL(setFilterValid(bool)), this, SLOT(startInterfaceCapture(bool)));
+ connect(&capture_interfaces_dialog_, SIGNAL(setFilterValid(bool, const QString)),
+ this, SLOT(startInterfaceCapture(bool, const QString)));
capture_interfaces_dialog_.SetTab(0);
capture_interfaces_dialog_.updateInterfaces();