return sizeHint() + QSize(ViewItem::HighlightRadius, 0);
}
-shared_ptr<RowItem> Header::get_mouse_over_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_)
return shared_ptr<RowItem>();
}
-void Header::clear_selection()
-{
- for (auto &i : view_)
- i->select(false);
- update();
-}
-
void Header::paintEvent(QPaintEvent*)
{
// The trace labels are not drawn with the arrows exactly on the
QApplication::keyboardModifiers() & Qt::ControlModifier;
// Unselect everything if control is not pressed
- const shared_ptr<RowItem> mouse_over =
+ const shared_ptr<ViewItem> mouse_over =
get_mouse_over_item(event->pos());
for (auto &r : view_)
update();
}
-void Header::leaveEvent(QEvent*)
-{
- mouse_point_ = QPoint(-1, -1);
- update();
-}
-
void Header::contextMenuEvent(QContextMenuEvent *event)
{
- const shared_ptr<RowItem> r = get_mouse_over_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());