summaryrefslogtreecommitdiff
path: root/ui/qt/packet_list.cpp
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2015-05-15 09:04:02 -0700
committerGerald Combs <gerald@wireshark.org>2015-05-15 16:07:29 +0000
commit76a5465cf0d767bb11c8e5a152b7cf555ee5d920 (patch)
tree5edac296097ebdecb0e005589affef462b7051ca /ui/qt/packet_list.cpp
parentf1a747e96eae0b0f3554d70073f56a741e9f1582 (diff)
downloadwireshark-76a5465cf0d767bb11c8e5a152b7cf555ee5d920.tar.gz
Qt: Fix packet deselection.
When no packets are selected, clear the related item delegate, packet detail, and byte view. Also, don't crash. Bug: 10529 Change-Id: I1f46d0d60d060d517f1ee2f8b5a9124bc1fad00e Reviewed-on: https://code.wireshark.org/review/8470 Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'ui/qt/packet_list.cpp')
-rw-r--r--ui/qt/packet_list.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp
index 9f24492cda..132bb5b39c 100644
--- a/ui/qt/packet_list.cpp
+++ b/ui/qt/packet_list.cpp
@@ -452,12 +452,23 @@ void PacketList::selectionChanged (const QItemSelection & selected, const QItemS
if (!cap_file_) return;
- int row = selected.first().top();
- cf_select_packet(cap_file_, row);
+ if (selected.isEmpty()) {
+ cf_unselect_packet(cap_file_);
+ } else {
+ int row = selected.first().top();
+ cf_select_packet(cap_file_, row);
+ }
+
related_packet_delegate_.clear();
+ if (proto_tree_) proto_tree_->clear();
+ if (byte_view_tab_) byte_view_tab_->clear();
+
emit packetSelectionChanged();
- if (!cap_file_->edt) return;
+ if (!cap_file_->edt) {
+ viewport()->update();
+ return;
+ }
if (proto_tree_ && cap_file_->edt->tree) {
packet_info *pi = &cap_file_->edt->pi;
@@ -476,8 +487,6 @@ void PacketList::selectionChanged (const QItemSelection & selected, const QItemS
struct data_source *source;
char* source_name;
- byte_view_tab_->clear();
-
for (src_le = cap_file_->edt->pi.data_src; src_le != NULL; src_le = src_le->next) {
source = (struct data_source *)src_le->data;
source_name = get_data_source_name(source);