diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index d3ada92ff7..6345d8fd28 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -189,10 +189,16 @@ Drag::motion_handler (GdkEvent* event, bool from_autoscroll) _last_pointer_frame = adjusted_current_frame (event); _current_pointer_frame = _editor->event_frame (event, &_current_pointer_x, &_current_pointer_y); + /* check to see if we have moved in any way that matters since the last motion event */ + if ( (!x_movement_matters() || _last_pointer_frame == adjusted_current_frame (event)) && + (!y_movement_matters() || _last_pointer_y == _current_pointer_y) ) { + return false; + } + pair const threshold = move_threshold (); bool const old_move_threshold_passed = _move_threshold_passed; - + if (!from_autoscroll && !_move_threshold_passed) { bool const xp = (::llabs (adjusted_current_frame (event) - _grab_frame) >= threshold.first); diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 5d8cf39090..bfca141c67 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -613,6 +613,10 @@ public: void motion (GdkEvent *, bool); void finished (GdkEvent *, bool); + bool allow_vertical_autoscroll () const { + return false; + } + bool y_movement_matters () const { return false; }