// 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);
int64_t View::get_nearest_level_change(const QPoint &p) const
{
+ if (snap_distance_ == 0)
+ return -1;
+
shared_ptr<Signal> signal = signal_under_mouse_cursor_;
if (!signal)
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;
{
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)
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