]> sigrok.org Git - pulseview.git/blobdiff - pv/view/cursorheader.cpp
Flag: Added flag time markers
[pulseview.git] / pv / view / cursorheader.cpp
index 22c1259f99622fb94d53d74ab41098f0ff265ac7..2683e9e6b20c8fc10c9d81f5bfd10dadb14f95fa 100644 (file)
@@ -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<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;
 
@@ -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)
@@ -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