void ViewWidget::drag_items(const QPoint &delta) { bool item_dragged = false; // Drag the row items 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(); } if (item_owner) { item_dragged = true; item_owner->restack_items(); for (const auto &r : *item_owner) r->animate_to_layout_v_offset(); } // Drag the time items const vector< shared_ptr<TimeItem> > items(view_.time_items()); for (auto &i : items) if (i->dragging()) { i->drag_by(delta); item_dragged = true; } // Do the background drag if (!item_dragged) drag_by(delta); }
void ViewWidget::drag_items(const QPoint &delta) { bool item_dragged = false; // Drag the row items const vector< shared_ptr<RowItem> > row_items( view_.list_by_type<RowItem>()); for (shared_ptr<RowItem> r : row_items) if (r->dragging()) { r->drag_by(delta); // Ensure the trace is selected r->select(); item_dragged = true; } // If an item is being dragged, update the stacking TraceTreeItemOwner *item_owner = nullptr; const vector< shared_ptr<TraceTreeItem> > trace_tree_items( view_.list_by_type<TraceTreeItem>()); for (shared_ptr<TraceTreeItem> i : trace_tree_items) if (i->dragging()) item_owner = i->owner(); if (item_owner) { item_owner->restack_items(); for (shared_ptr<TraceTreeItem> i : trace_tree_items) i->animate_to_layout_v_offset(); } // Drag the time items const vector< shared_ptr<TimeItem> > items(view_.time_items()); for (auto &i : items) if (i->dragging()) { i->drag_by(delta); item_dragged = true; } // Do the background drag if (!item_dragged) drag_by(delta); }