]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/ruler.cpp
DecodeTrace: Allow row hiding
[pulseview.git] / pv / views / trace / ruler.cpp
index 33746ed6f23814c888212b06c687afc071e3f7e2..555794fc42c6e881c5691fc1d64c43a0355e7cd3 100644 (file)
@@ -158,6 +158,12 @@ void Ruler::contextMenuEvent(QContextMenuEvent *event)
        connect(set_zero_position, SIGNAL(triggered()), this, SLOT(on_setZeroPosition()));
        menu->addAction(set_zero_position);
 
+       if (view_.zero_offset().convert_to<double>() != 0) {
+               QAction *const reset_zero_position = new QAction(tr("Reset zero point"), this);
+               connect(reset_zero_position, SIGNAL(triggered()), this, SLOT(on_resetZeroPosition()));
+               menu->addAction(reset_zero_position);
+       }
+
        QAction *const toggle_hover_marker = new QAction(this);
        connect(toggle_hover_marker, SIGNAL(triggered()), this, SLOT(on_toggleHoverMarker()));
        menu->addAction(toggle_hover_marker);
@@ -194,10 +200,12 @@ void Ruler::item_hover(const shared_ptr<ViewItem> &item, QPoint pos)
 
 shared_ptr<TimeItem> Ruler::get_reference_item() const
 {
+       // Note: time() returns 0 if item returns no valid time
+
        if (mouse_modifiers_ & Qt::ShiftModifier)
                return nullptr;
 
-       if (hover_item_)
+       if (hover_item_ && (hover_item_->time() != 0))
                return hover_item_;
 
        shared_ptr<TimeItem> ref_item;
@@ -215,6 +223,9 @@ shared_ptr<TimeItem> Ruler::get_reference_item() const
                }
        }
 
+       if (ref_item && (ref_item->time() == 0))
+               ref_item.reset();
+
        return ref_item;
 }
 
@@ -392,6 +403,11 @@ void Ruler::on_setZeroPosition()
        view_.set_zero_position(get_absolute_time_from_x_pos(mouse_down_point_.x()));
 }
 
+void Ruler::on_resetZeroPosition()
+{
+       view_.reset_zero_position();
+}
+
 void Ruler::on_toggleHoverMarker()
 {
        GlobalSettings settings;