summaryrefslogtreecommitdiff
path: root/ui/qt/sequence_diagram.cpp
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2016-05-25 12:02:40 -0700
committerAnders Broman <a.broman58@gmail.com>2016-05-26 04:18:41 +0000
commit33103f3fb29629eaa0dde641bc21f88ed9469189 (patch)
tree115b8999ded83623d7785ba3d995179525af1e70 /ui/qt/sequence_diagram.cpp
parentaaa55513465689570366c8ed86bafe7048806fd1 (diff)
downloadwireshark-33103f3fb29629eaa0dde641bc21f88ed9469189.tar.gz
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.cpp47
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;