]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/ruler.cpp
Fix #1596 by making memory management more robust
[pulseview.git] / pv / views / trace / ruler.cpp
index bebf529147da67f5bc4d591255bce144d5d1674b..83ffed281b5f6768085d1a03ee77f2840a443487 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);
@@ -277,7 +283,7 @@ void Ruler::paintEvent(QPaintEvent*)
                const int rightedge = width();
                const int x_tick = tick.first;
                if ((x_tick > leftedge) && (x_tick < rightedge)) {
-                       const int x_left_bound = QFontMetrics(font()).width(tick.second) / 2;
+                       const int x_left_bound = util::text_width(QFontMetrics(font()), tick.second) / 2;
                        const int x_right_bound = rightedge - x_left_bound;
                        const int x_legend = min(max(x_tick, x_left_bound), x_right_bound);
                        p.drawText(x_legend, ValueMargin, 0, text_height,
@@ -397,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;