diff options
author | Gerald Combs <gerald@wireshark.org> | 2015-05-15 09:04:02 -0700 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2015-05-15 16:07:29 +0000 |
commit | 76a5465cf0d767bb11c8e5a152b7cf555ee5d920 (patch) | |
tree | 5edac296097ebdecb0e005589affef462b7051ca /ui/qt/packet_list.cpp | |
parent | f1a747e96eae0b0f3554d70073f56a741e9f1582 (diff) |
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.cpp | 19 |
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); |