- _dragging = false;
-}
-
-void Header::mouseReleaseEvent(QMouseEvent *event)
-{
- assert(event);
- if (event->button() & Qt::LeftButton)
- mouseLeftReleaseEvent(event);
-
- _mouse_down_item = nullptr;
-}
-
-void Header::mouseMoveEvent(QMouseEvent *event)
-{
- assert(event);
- _mouse_point = event->pos();
-
- if (!(event->buttons() & Qt::LeftButton))
- return;
-
- if ((event->pos() - _mouse_down_point).manhattanLength() <
- QApplication::startDragDistance())
- return;
-
- // Check all the drag items share a common owner
- RowItemOwner *item_owner = nullptr;
- for (shared_ptr<RowItem> r : _view)
- if (r->dragging()) {
- if (!item_owner)
- item_owner = r->owner();
- else if(item_owner != r->owner())
- return;
- }
-
- if (!item_owner)
- return;
-
- // Do the drag
- _dragging = true;
-
- const int delta = event->pos().y() - _mouse_down_point.y();
-
- for (std::shared_ptr<RowItem> r : _view)
- if (r->dragging()) {
- r->force_to_v_offset(r->drag_point().y() + delta);
-
- // Ensure the trace is selected
- r->select();
- }
-
- signals_moved();
-
- update();
-}
-
-void Header::leaveEvent(QEvent*)
-{
- _mouse_point = QPoint(-1, -1);
- update();