CursorHeader::CursorHeader(View &parent) :
MarginWidget(parent),
- dragging_(false),
textHeight_(calculateTextHeight())
{
- setMouseTracking(true);
}
QSize CursorHeader::sizeHint() const
// would be clipped away.
const QRect r = rect().adjusted(0, 0, 0, -BaselineOffset);
- // Draw the cursors
- if (view_.cursors_shown())
- view_.cursors()->paint_label(p, r);
+ // Draw the items
+ const vector< shared_ptr<TimeItem> > items(view_.time_items());
+ for (auto &m : items)
+ m->paint_label(p, r);
}
void CursorHeader::mouseMoveEvent(QMouseEvent *e)
{
+ mouse_point_ = e->pos();
+
if (!(e->buttons() & Qt::LeftButton))
return;
for (auto &i : items)
if (i->dragging())
i->set_time(view_.offset() +
- (i->drag_point().x() + delta) * view_.scale());
+ (i->drag_point().x() + delta - 0.5) *
+ view_.scale());
}
void CursorHeader::mousePressEvent(QMouseEvent *e)
clear_selection();
const vector< shared_ptr<TimeItem> > items(view_.time_items());
- for (auto &i : items)
- if (i && i->label_rect(rect()).contains(e->pos())) {
- mouse_down_item_ = i;
+ for (auto i = items.rbegin(); i != items.rend(); i++)
+ if ((*i)->label_rect(rect()).contains(e->pos())) {
+ mouse_down_item_ = (*i);
break;
}
i->drag_release();
}
+void CursorHeader::leaveEvent(QEvent*)
+{
+ mouse_point_ = QPoint(-1, -1);
+ update();
+}
+
+void CursorHeader::mouseDoubleClickEvent(QMouseEvent *e)
+{
+ view_.add_flag(view_.offset() + ((double)e->x() + 0.5) * view_.scale());
+}
+
+void CursorHeader::keyPressEvent(QKeyEvent *e)
+{
+ assert(e);
+
+ if (e->key() == Qt::Key_Delete)
+ {
+ const vector< shared_ptr<TimeItem> > items(view_.time_items());
+ for (auto &i : items)
+ if (i->selected())
+ i->delete_pressed();
+ }
+}
+
} // namespace view
} // namespace pv