diff options
author | Gerald Combs <gerald@wireshark.org> | 2016-05-25 12:02:40 -0700 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2016-05-26 04:18:41 +0000 |
commit | 33103f3fb29629eaa0dde641bc21f88ed9469189 (patch) | |
tree | 115b8999ded83623d7785ba3d995179525af1e70 /ui/qt/sequence_diagram.cpp | |
parent | aaa55513465689570366c8ed86bafe7048806fd1 (diff) |
Qt: Add next / previous sequence shortcuts.
Add next (N) and previous (P) keyboard shortcuts. The GTK+ UI uses the
down and up keys, but we're already using those for panning the Y axis.
Add a scroll margin when using N and P.
Add mouse wheel and trackpad support.
Disable mouse dragging for now until we figure out how to limit it to
our axis boundaries.
Ping-Bug: 12419
Change-Id: I292319928db365206277bf2bb3e42e14ef811ff0
Reviewed-on: https://code.wireshark.org/review/15559
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'ui/qt/sequence_diagram.cpp')
-rw-r--r-- | ui/qt/sequence_diagram.cpp | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/ui/qt/sequence_diagram.cpp b/ui/qt/sequence_diagram.cpp index fa1ace2d54..0dd6629277 100644 --- a/ui/qt/sequence_diagram.cpp +++ b/ui/qt/sequence_diagram.cpp @@ -58,7 +58,8 @@ SequenceDiagram::SequenceDiagram(QCPAxis *keyAxis, QCPAxis *valueAxis, QCPAxis * comment_axis_(commentAxis), data_(NULL), sainfo_(NULL), - selected_packet_(0) + selected_packet_(0), + selected_key_(-1.0) { data_ = new WSCPSeqDataMap(); // xaxis (value): Address @@ -103,6 +104,46 @@ SequenceDiagram::~SequenceDiagram() delete data_; } +int SequenceDiagram::adjacentPacket(bool next) +{ + int adjacent_packet = -1; + WSCPSeqDataMap::const_iterator it; + + if (data_->size() < 1) return adjacent_packet; + + if (selected_packet_ < 1) { + WSCPSeqData &data = next ? data_->first() : data_->last(); + return data.value->frame_number; + } + + if (next) { + for (it = data_->constBegin(); it != data_->constEnd(); ++it) { + if (it.value().value->frame_number == selected_packet_) { + ++it; + if (it != data_->constEnd()) { + adjacent_packet = it.value().value->frame_number; + selected_key_ = it.value().key; + } + break; + } + } + } else { + it = data_->constEnd(); + --it; + while (it != data_->constBegin()) { + guint32 prev_frame = it.value().value->frame_number; + --it; + if (prev_frame == selected_packet_) { + adjacent_packet = it.value().value->frame_number; + selected_key_ = it.value().key; + break; + } + } + } + + return adjacent_packet; +} + void SequenceDiagram::setData(_seq_analysis_info *sainfo) { data_->clear(); @@ -154,6 +195,7 @@ void SequenceDiagram::setData(_seq_analysis_info *sainfo) void SequenceDiagram::setSelectedPacket(int selected_packet) { + selected_key_ = -1; if (selected_packet > 0) { selected_packet_ = selected_packet; } else { @@ -215,6 +257,7 @@ void SequenceDiagram::draw(QCPPainter *painter) QPalette sel_pal; fg_pen.setColor(sel_pal.color(QPalette::HighlightedText)); bg_color = sel_pal.color(QPalette::Highlight); + selected_key_ = cur_key; } else { fg_pen.setColor(Qt::black); bg_color = ColorUtils::sequenceColor(sai->conv_num); @@ -339,7 +382,7 @@ QCPRange SequenceDiagram::getValueRange(bool &validRange, QCPAbstractPlottable:: if (sainfo_) { range.lower = 0; - range.upper = sainfo_->num_nodes; + range.upper = data_->size(); valid = true; } validRange = valid; |