summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-01-05 15:51:13 +0000
committerCarl Hetherington <carl@carlh.net>2010-01-05 15:51:13 +0000
commit46534f2f59b2322891a8ef8f74e38605580a0758 (patch)
tree8dd126d4daff22116595d6461408b6fdae07f406
parent27eb926d3fe86517fb83af19ae5c3acc737a677b (diff)
Refix yesterday's patch; ignore motion events that haven't moved anywhere, and don't try to autoscroll vertically when dragging range markers.
git-svn-id: svn://localhost/ardour2/branches/3.0@6457 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/editor_drag.cc8
-rw-r--r--gtk2_ardour/editor_drag.h4
2 files changed, 11 insertions, 1 deletions
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<nframes64_t, int> 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;
}