X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fcursorheader.cpp;h=fbc6e2e791d53eccf26140896fae83291f607714;hb=6364695093dad2ad3bfab9a950cc420e29f24680;hp=22c1259f99622fb94d53d74ab41098f0ff265ac7;hpb=e95fb8e943bd24e18ba5d237f259a76e705f3914;p=pulseview.git diff --git a/pv/view/cursorheader.cpp b/pv/view/cursorheader.cpp index 22c1259..fbc6e2e 100644 --- a/pv/view/cursorheader.cpp +++ b/pv/view/cursorheader.cpp @@ -47,7 +47,6 @@ int CursorHeader::calculateTextHeight() CursorHeader::CursorHeader(View &parent) : MarginWidget(parent), - dragging_(false), textHeight_(calculateTextHeight()) { setMouseTracking(true); @@ -76,13 +75,16 @@ void CursorHeader::paintEvent(QPaintEvent*) // would be clipped away. const QRect r = rect().adjusted(0, 0, 0, -BaselineOffset); - // Draw the cursors - if (view_.cursors_shown()) - view_.cursors()->draw_markers(p, r); + // Draw the items + const vector< shared_ptr > 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; @@ -98,7 +100,8 @@ void CursorHeader::mouseMoveEvent(QMouseEvent *e) 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) @@ -111,9 +114,9 @@ void CursorHeader::mousePressEvent(QMouseEvent *e) clear_selection(); const vector< shared_ptr > 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; } @@ -132,10 +135,12 @@ void CursorHeader::mouseReleaseEvent(QMouseEvent *) if (!dragging_ && mouse_down_item_) { Popup *const p = mouse_down_item_->create_popup(&view_); - const QPoint arrpos(mouse_down_item_->get_x(), - height() - BaselineOffset); - p->set_position(mapToGlobal(arrpos), Popup::Bottom); - p->show(); + if (p) { + const QPoint arrpos(mouse_down_item_->get_x(), + height() - BaselineOffset); + p->set_position(mapToGlobal(arrpos), Popup::Bottom); + p->show(); + } } dragging_ = false; @@ -146,5 +151,16 @@ void CursorHeader::mouseReleaseEvent(QMouseEvent *) 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()); +} + } // namespace view } // namespace pv