, _pointer_frame_offset (0)
, _trackview_only (trackview_only)
, _move_threshold_passed (false)
+ , _starting_point_passed (false)
, _was_double_click (false)
, _raw_grab_frame (0)
, _grab_frame (0)
bool const old_move_threshold_passed = _move_threshold_passed;
- if (!from_autoscroll && !_move_threshold_passed) {
+ if (!_move_threshold_passed) {
bool const xp = (::llabs (_drags->current_pointer_frame () - _raw_grab_frame) >= threshold.first);
bool const yp = (::fabs ((current_pointer_y () - _grab_y)) >= threshold.second);
}
if (!_editor->autoscroll_active() || from_autoscroll) {
- motion (event, _move_threshold_passed != old_move_threshold_passed);
+
+ bool first_move = (_move_threshold_passed != old_move_threshold_passed) ||
+ from_autoscroll;
+
+ motion (event, first_move && !_starting_point_passed);
+
+ _starting_point_passed = first_move;
_last_pointer_x = _drags->current_pointer_x ();
_last_pointer_y = current_pointer_y ();
private:
bool _trackview_only; ///< true if pointer y value should always be relative to the top of the trackview group
bool _move_threshold_passed; ///< true if the move threshold has been passed, otherwise false
+ bool _starting_point_passed; ///< true if we called move () with first_move flag, otherwise false
bool _was_double_click; ///< true if drag initiated by a double click event
double _grab_x; ///< trackview x of the grab start position
double _grab_y; ///< y of the grab start position, possibly adjusted if _trackview_only is true