diff options
author | Carl Hetherington <carl@carlh.net> | 2009-06-14 13:32:17 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-06-14 13:32:17 +0000 |
commit | 478bab5380f586d3e022839a000a86c947a29f9c (patch) | |
tree | c1a1282bf08901ff41dd85099cd4ecf416b013ef /gtk2_ardour | |
parent | b192de88b626eb87fb83d2e1172f78f2efda3dc4 (diff) |
Prevent vertical autoscroll when dragging the playhead.
git-svn-id: svn://localhost/ardour2/branches/3.0@5186 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.h | 8 |
4 files changed, 12 insertions, 4 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index ea9581ebf9..24d43c1b44 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1882,7 +1882,7 @@ public: bool autoscroll_canvas (); void start_canvas_autoscroll (int x, int y); void stop_canvas_autoscroll (); - void maybe_autoscroll (GdkEventMotion*); + void maybe_autoscroll (GdkEventMotion*, bool); bool allow_vertical_scroll; /* trimming */ diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index fb8d489905..8ef127f0f9 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -540,7 +540,7 @@ Editor::drop_regions (const RefPtr<Gdk::DragContext>& context, } void -Editor::maybe_autoscroll (GdkEventMotion* event) +Editor::maybe_autoscroll (GdkEventMotion* event, bool allow_vert) { nframes64_t rightmost_frame = leftmost_frame + current_page_frames(); nframes64_t frame = _drag->current_pointer_frame(); @@ -548,7 +548,7 @@ Editor::maybe_autoscroll (GdkEventMotion* event) autoscroll_y = 0; autoscroll_x = 0; - if (event->y < canvas_timebars_vsize) { + if (event->y < canvas_timebars_vsize && allow_vert) { autoscroll_y = -1; startit = true; } else if (event->y > _canvas_height) { diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index b1243b8fa4..f094290136 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -207,7 +207,7 @@ Drag::motion_handler (GdkEvent* event, bool from_autoscroll) if (event->motion.state & Gdk::BUTTON1_MASK || event->motion.state & Gdk::BUTTON2_MASK) { if (!from_autoscroll) { - _editor->maybe_autoscroll (&event->motion); + _editor->maybe_autoscroll (&event->motion, allow_vertical_autoscroll ()); } motion (event, _had_movement != old_had_movement); diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index a62dd7e2ec..651f2becdd 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -110,6 +110,10 @@ public: return false; } + virtual bool allow_vertical_autoscroll () const { + return true; + } + /** Called when a subclass should update the editor's selection following a drag */ virtual void update_selection () {} @@ -343,6 +347,10 @@ public: return true; } + bool allow_vertical_autoscroll () const { + return false; + } + private: EditorCursor* _cursor; ///< cursor being dragged bool _stop; ///< true to stop the transport on starting the drag, otherwise false |