ViewWidget: Moved in unified accept_drag
[pulseview.git] / pv / view / header.cpp
index 2a732f25daa3f7f16590c8d8e39310e4acc4a295..3530d891b5f7edf6bde111c70f7202ab2849e718 100644 (file)
@@ -94,6 +94,24 @@ shared_ptr<ViewItem> Header::get_mouse_over_item(const QPoint &pt)
        return shared_ptr<RowItem>();
 }
 
+void Header::drag_items(const QPoint &delta)
+{
+       RowItemOwner *item_owner = nullptr;
+       for (std::shared_ptr<RowItem> r : view_)
+               if (r->dragging()) {
+                       item_owner = r->owner();
+                       r->drag_by(delta);
+
+                       // Ensure the trace is selected
+                       r->select();
+               }
+
+       item_owner->restack_items();
+       for (const auto &r : *item_owner)
+               r->animate_to_layout_v_offset();
+       signals_moved();
+}
+
 void Header::paintEvent(QPaintEvent*)
 {
        // The trace labels are not drawn with the arrows exactly on the
@@ -123,92 +141,6 @@ void Header::paintEvent(QPaintEvent*)
        painter.end();
 }
 
-void Header::mouseLeftReleaseEvent(QMouseEvent *event)
-{
-       assert(event);
-
-       const bool ctrl_pressed =
-               QApplication::keyboardModifiers() & Qt::ControlModifier;
-
-       // Unselect everything if control is not pressed
-       const shared_ptr<ViewItem> mouse_over =
-               get_mouse_over_item(event->pos());
-
-       for (auto &r : view_)
-               r->drag_release();
-
-       if (dragging_)
-               view_.restack_all_row_items();
-       else
-       {
-               if (!ctrl_pressed) {
-                       for (shared_ptr<RowItem> r : view_)
-                               if (mouse_down_item_ != r)
-                                       r->select(false);
-
-                       if (mouse_down_item_)
-                               show_popup(mouse_down_item_);
-               }
-       }
-
-       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 QPoint delta = event->pos() - mouse_down_point_;
-
-       for (std::shared_ptr<RowItem> r : view_)
-               if (r->dragging()) {
-                       r->drag_by(delta);
-
-                       // Ensure the trace is selected
-                       r->select();
-               }
-
-       item_owner->restack_items();
-       for (const auto &r : *item_owner)
-               r->animate_to_layout_v_offset();
-       signals_moved();
-
-       update();
-}
-
 void Header::contextMenuEvent(QContextMenuEvent *event)
 {
        const shared_ptr<ViewItem> r = get_mouse_over_item(mouse_point_);
@@ -238,13 +170,9 @@ void Header::keyPressEvent(QKeyEvent *e)
 {
        assert(e);
 
-       if (e->key() == Qt::Key_Delete)
-       {
-               for (const shared_ptr<RowItem> r : view_)
-                       if (r->selected())
-                               r->delete_pressed();
-       }
-       else if (e->key() == Qt::Key_G && e->modifiers() == Qt::ControlModifier)
+       MarginWidget::keyPressEvent(e);
+
+       if (e->key() == Qt::Key_G && e->modifiers() == Qt::ControlModifier)
                on_group();
        else if (e->key() == Qt::Key_U && e->modifiers() == Qt::ControlModifier)
                on_ungroup();