diff options
author | Roland Knall <rknall@gmail.com> | 2022-06-29 12:41:51 +0200 |
---|---|---|
committer | Roland Knall <r.knall@moba.cc> | 2022-06-29 12:42:22 +0200 |
commit | 5fb2324692ac18ac89ee24da36262716348ed5e7 (patch) | |
tree | 799500efafba045efa8fbc8ddfc1f29303b5ee61 /ui | |
parent | 505226d1e2d1043652237b8944581b75abc47c56 (diff) |
Qt: Improve sort for packet list
Diffstat (limited to 'ui')
-rw-r--r-- | ui/qt/models/packet_list_model.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/ui/qt/models/packet_list_model.cpp b/ui/qt/models/packet_list_model.cpp index 4d7824400a..1dc87bc23b 100644 --- a/ui/qt/models/packet_list_model.cpp +++ b/ui/qt/models/packet_list_model.cpp @@ -481,15 +481,16 @@ bool PacketListModel::recordLessThan(PacketListRecord *r1, PacketListRecord *r2) // Column comes directly from frame data cmp_val = frame_data_compare(sort_cap_file_->epan, r1->frameData(), r2->frameData(), sort_cap_file_->cinfo.columns[sort_column_].col_fmt); } else { - if (r1->columnString(sort_cap_file_, sort_column_).constData() == r2->columnString(sort_cap_file_, sort_column_).constData()) { - cmp_val = 0; - } else if (sort_column_is_numeric_) { + QString r1String = r1->columnString(sort_cap_file_, sort_column_); + QString r2String = r2->columnString(sort_cap_file_, sort_column_); + cmp_val = r1String.compare(r2String); + if (cmp_val != 0 && sort_column_is_numeric_) { // Custom column with numeric data (or something like a port number). // Attempt to convert to numbers. // XXX This is slow. Can we avoid doing this? bool ok_r1, ok_r2; - double num_r1 = parseNumericColumn(r1->columnString(sort_cap_file_, sort_column_), &ok_r1); - double num_r2 = parseNumericColumn(r2->columnString(sort_cap_file_, sort_column_), &ok_r2); + double num_r1 = parseNumericColumn(r1String, &ok_r1); + double num_r2 = parseNumericColumn(r2String, &ok_r2); if (!ok_r1 && !ok_r2) { cmp_val = 0; @@ -500,8 +501,6 @@ bool PacketListModel::recordLessThan(PacketListRecord *r1, PacketListRecord *r2) } else if (!ok_r2 || (num_r1 > num_r2)) { cmp_val = 1; } - } else { - cmp_val = r1->columnString(sort_cap_file_, sort_column_).compare(r2->columnString(sort_cap_file_, sort_column_)); } if (cmp_val == 0) { |