X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Fheader.cpp;h=00c4201cf39a28d0ee3e234b0f311e6838ab1a5b;hb=54401bbb93fbbd9b0de4874bf02c24b710643fe7;hp=8434e2c8dc9ffb289c676f338d151793367e5a8e;hpb=e3374498baf2b2a05889cab370442ff326b390b3;p=pulseview.git diff --git a/pv/view/header.cpp b/pv/view/header.cpp index 8434e2c8..00c4201c 100644 --- a/pv/view/header.cpp +++ b/pv/view/header.cpp @@ -124,13 +124,45 @@ void Header::mousePressEvent(QMouseEvent *event) if(mouse_over_signal) mouse_over_signal->select(!mouse_over_signal->selected()); + if(event->button() & Qt::LeftButton) { + _mouse_down_point = event->pos(); + + // Save the current signal offsets + BOOST_FOREACH(const shared_ptr s, sigs) + _mouse_down_signal_offsets[s.get()] = + s->get_v_offset(); + } + update(); } +void Header::mouseReleaseEvent(QMouseEvent *event) +{ + assert(event); + if(event->button() == Qt::LeftButton) + _mouse_down_signal_offsets.clear(); +} + void Header::mouseMoveEvent(QMouseEvent *event) { assert(event); _mouse_point = event->pos(); + + // Move the signals if we are dragging + if(!_mouse_down_signal_offsets.empty()) { + const vector< shared_ptr > &sigs = + _view.session().get_signals(); + const int delta = event->pos().y() - _mouse_down_point.y(); + + BOOST_FOREACH(const shared_ptr s, sigs) + if(s->selected()) + s->set_v_offset( + _mouse_down_signal_offsets[s.get()] + + delta); + + signals_moved(); + } + update(); }