- for (auto &i : view_)
- if (i->enabled() && i->label_rect(r).contains(pt))
- return i;
- return shared_ptr<RowItem>();
-}
-
-bool Header::accept_drag() const
-{
- // 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 false;
- }
-
- return item_owner;
-}
-
-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();
+ const vector<shared_ptr<TraceTreeItem>> items(
+ view_.list_by_type<TraceTreeItem>());
+ for (auto i = items.rbegin(); i != items.rend(); i++)
+ if ((*i)->enabled() && (*i)->label_rect(r).contains(pt))
+ return *i;
+ return shared_ptr<TraceTreeItem>();