X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.cpp;h=b8bbe35798825b1c1ff129fd5bae798f55219ddc;hp=b9872130890f4e124c9cb052680f852e68124757;hb=fc1df2df99c8ac41269ffba5966fcbb9a2e28479;hpb=eeceee9955e7db4ac777d49d1b7a766069476b08 diff --git a/pv/views/trace/view.cpp b/pv/views/trace/view.cpp index b987213..b8bbe35 100644 --- a/pv/views/trace/view.cpp +++ b/pv/views/trace/view.cpp @@ -178,6 +178,7 @@ View::View(Session &session, bool is_main_view, QWidget *parent) : // Set up settings and event handlers GlobalSettings settings; colored_bg_ = settings.value(GlobalSettings::Key_View_ColoredBG).toBool(); + snap_distance_ = settings.value(GlobalSettings::Key_View_SnapDistance).toInt(); GlobalSettings::add_change_handler(this); @@ -860,6 +861,9 @@ const QPoint& View::hover_point() const int64_t View::get_nearest_level_change(const QPoint &p) const { + if (snap_distance_ == 0) + return -1; + shared_ptr signal = signal_under_mouse_cursor_; if (!signal) @@ -887,9 +891,9 @@ int64_t View::get_nearest_level_change(const QPoint &p) const int64_t nearest = -1; // Only use closest left or right edge if they're close to the cursor - if ((left_delta < right_delta) && (left_delta < 15)) + if ((left_delta < right_delta) && (left_delta < snap_distance_)) nearest = edges.front().first; - if ((left_delta >= right_delta) && (right_delta < 15)) + if ((left_delta >= right_delta) && (right_delta < snap_distance_)) nearest = edges.back().first; return nearest; @@ -926,6 +930,11 @@ void View::on_setting_changed(const QString &key, const QVariant &value) { if (key == GlobalSettings::Key_View_TriggerIsZeroTime) on_settingViewTriggerIsZeroTime_changed(value); + + if (key == GlobalSettings::Key_View_SnapDistance) { + GlobalSettings settings; + snap_distance_ = settings.value(GlobalSettings::Key_View_SnapDistance).toInt(); + } } void View::trigger_event(int segment_id, util::Timestamp location) @@ -1257,7 +1266,10 @@ bool View::eventFilter(QObject *object, QEvent *event) if (object == viewport_) hover_point_ = mouse_event->pos(); else if (object == ruler_) - hover_point_ = QPoint(mouse_event->x(), 0); + // Adjust the hover point's y coordinate so that it's relative to + // the top of the viewport. The result may be negative. + hover_point_ = QPoint(mouse_event->pos().x(), + mouse_event->pos().y() - ruler_->sizeHint().height()); else if (object == header_) hover_point_ = QPoint(0, mouse_event->y()); else