From dd5f86c674098657efba208852715916d76bc497 Mon Sep 17 00:00:00 2001 From: "j.novak@netsystem.cz" Date: Mon, 31 Oct 2022 14:07:49 +0000 Subject: [PATCH] Capture options dialog: Fix start of capture by double click --- ui/qt/capture_options_dialog.cpp | 46 ++++++++++++++++++++------------ ui/qt/capture_options_dialog.h | 2 +- ui/qt/interface_frame.cpp | 5 +++- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/ui/qt/capture_options_dialog.cpp b/ui/qt/capture_options_dialog.cpp index 8f31eff7ae..353cdcb4c4 100644 --- a/ui/qt/capture_options_dialog.cpp +++ b/ui/qt/capture_options_dialog.cpp @@ -233,7 +233,7 @@ CaptureOptionsDialog::CaptureOptionsDialog(QWidget *parent) : connect(mainApp, SIGNAL(localInterfaceListChanged()), this, SLOT(updateLocalInterfaces())); connect(ui->browseButton, SIGNAL(clicked()), this, SLOT(browseButtonClicked())); connect(ui->interfaceTree, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(itemClicked(QTreeWidgetItem*,int))); - connect(ui->interfaceTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(itemDoubleClicked(QTreeWidgetItem*))); + connect(ui->interfaceTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(itemDoubleClicked(QTreeWidgetItem*,int))); connect(ui->tempDirBrowseButton, SIGNAL(clicked()), this, SLOT(tempDirBrowseButtonClicked())); ui->tabWidget->setCurrentIndex(0); @@ -518,29 +518,41 @@ void CaptureOptionsDialog::itemClicked(QTreeWidgetItem *item, int column) #endif /* HAVE_LIBPCAP */ } -void CaptureOptionsDialog::itemDoubleClicked(QTreeWidgetItem *item) +void CaptureOptionsDialog::itemDoubleClicked(QTreeWidgetItem *item, int column) { InterfaceTreeWidgetItem *ti = dynamic_cast(item); if (!ti) return; -#ifdef HAVE_LIBPCAP - interface_t *device; - QString interface_name = ti->text(col_interface_); - device = find_device_by_if_name(interface_name); - if (!device) return; + switch(column) { - if (device->if_info.type == IF_EXTCAP) { - /* this checks if configuration is required and not yet provided or saved via prefs */ - QString device_name = ti->data(col_extcap_, Qt::UserRole).value(); - if (extcap_has_configuration((const char *)(device_name.toStdString().c_str()), TRUE)) - { - emit showExtcapOptions(device_name, true); - return; + // Double click starts capture just on columns which are not editable + case col_interface_: + case col_traffic_: + { +#ifdef HAVE_LIBPCAP + interface_t *device; + QString interface_name = ti->text(col_interface_); + device = find_device_by_if_name(interface_name); + if (!device) return; + + if (device->if_info.type == IF_EXTCAP) { + /* this checks if configuration is required and not yet provided or saved via prefs */ + QString device_name = ti->data(col_extcap_, Qt::UserRole).value(); + if (extcap_has_configuration((const char *)(device_name.toStdString().c_str()), TRUE)) + { + emit showExtcapOptions(device_name, true); + return; + } } - } #endif /* HAVE_LIBPCAP */ - emit startCapture(); - close(); + emit startCapture(); + close(); + break; + } + + default: + break; + } } void CaptureOptionsDialog::on_gbStopCaptureAuto_toggled(bool checked) diff --git a/ui/qt/capture_options_dialog.h b/ui/qt/capture_options_dialog.h index 86fb5ad049..e9eea76160 100644 --- a/ui/qt/capture_options_dialog.h +++ b/ui/qt/capture_options_dialog.h @@ -91,7 +91,7 @@ private slots: void browseButtonClicked(); void interfaceItemChanged(QTreeWidgetItem *item, int column); void itemClicked(QTreeWidgetItem *item, int column); - void itemDoubleClicked(QTreeWidgetItem *item); + void itemDoubleClicked(QTreeWidgetItem *item, int column); void changeEvent(QEvent* event); void tempDirBrowseButtonClicked(); diff --git a/ui/qt/interface_frame.cpp b/ui/qt/interface_frame.cpp index d732620aea..7aa6b7fb96 100644 --- a/ui/qt/interface_frame.cpp +++ b/ui/qt/interface_frame.cpp @@ -434,7 +434,10 @@ void InterfaceFrame::on_interfaceTree_doubleClicked(const QModelIndex &index) } #endif - startCapture(interfaces); + // Start capture for all columns except the first one with extcap + if (IFTREE_COL_EXTCAP != realIndex.column()) { + startCapture(interfaces); + } } #ifdef HAVE_LIBPCAP