return sizeHint() + QSize(ViewItem::HighlightRadius, 0);
}
-shared_ptr<RowItem> Header::get_mouse_over_row_item(const QPoint &pt)
+vector< shared_ptr<ViewItem> > Header::items()
+{
+ return vector< shared_ptr<ViewItem> >(view_.begin(), view_.end());
+}
+
+shared_ptr<ViewItem> Header::get_mouse_over_item(const QPoint &pt)
{
const QRect r(0, 0, width() - BaselineOffset, height());
for (auto &i : view_)
update();
}
-void Header::show_popup(const shared_ptr<RowItem> &item)
-{
- using pv::widgets::Popup;
-
- Popup *const p = item->create_popup(&view_);
- if (!p)
- return;
-
- const QPoint pt(width() - BaselineOffset, item->get_visual_y());
- p->set_position(mapToGlobal(pt), Popup::Right);
- p->show();
-}
-
void Header::paintEvent(QPaintEvent*)
{
// The trace labels are not drawn with the arrows exactly on the
assert(event);
mouse_down_point_ = event->pos();
- mouse_down_item_ = get_mouse_over_row_item(event->pos());
+ mouse_down_item_ = get_mouse_over_item(event->pos());
if (event->button() & Qt::LeftButton)
mouseLeftPressEvent(event);
QApplication::keyboardModifiers() & Qt::ControlModifier;
// Unselect everything if control is not pressed
- const shared_ptr<RowItem> mouse_over =
- get_mouse_over_row_item(event->pos());
+ const shared_ptr<ViewItem> mouse_over =
+ get_mouse_over_item(event->pos());
for (auto &r : view_)
r->drag_release();
// Do the drag
dragging_ = true;
- const int delta = event->pos().y() - mouse_down_point_.y();
+ const QPoint delta = event->pos() - mouse_down_point_;
for (std::shared_ptr<RowItem> r : view_)
if (r->dragging()) {
- r->force_to_v_offset(r->drag_point().y() + delta);
+ r->drag_by(delta);
// Ensure the trace is selected
r->select();
update();
}
-void Header::leaveEvent(QEvent*)
-{
- mouse_point_ = QPoint(-1, -1);
- update();
-}
-
void Header::contextMenuEvent(QContextMenuEvent *event)
{
- const shared_ptr<RowItem> r = get_mouse_over_row_item(mouse_point_);
+ const shared_ptr<ViewItem> r = get_mouse_over_item(mouse_point_);
if (!r)
return;
return a->visual_v_offset() < b->visual_v_offset(); });
shared_ptr<TraceGroup> group(new TraceGroup());
+ shared_ptr<RowItem> mouse_down_item(
+ std::dynamic_pointer_cast<RowItem>(mouse_down_item_));
shared_ptr<RowItem> focus_item(
- mouse_down_item_ ? mouse_down_item_ : selected_items.front());
+ mouse_down_item ? mouse_down_item : selected_items.front());
assert(focus_item);
assert(focus_item->owner());