diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-27 16:42:58 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-27 16:42:58 +0000 |
commit | a29a7b7bef6713931f130a295cefd20fb0f21d3b (patch) | |
tree | 6f123a5de0c9cae7b86f6e89ac3cfa6eebfc3274 /gtk2_ardour/editor_canvas_events.cc | |
parent | 95f823b02a0e770eff49e6a63535cf72ef08acfe (diff) |
scroll events on rulers/time canvas now control zoom/scrolling
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2814 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_canvas_events.cc')
-rw-r--r-- | gtk2_ardour/editor_canvas_events.cc | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index f7e7a590dd..e5ef336fd0 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -157,6 +157,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) return false; } + bool Editor::track_canvas_scroll_event (GdkEventScroll *event) { @@ -166,6 +167,58 @@ Editor::track_canvas_scroll_event (GdkEventScroll *event) } bool +Editor::time_canvas_scroll (GdkEventScroll* ev) +{ + int x, y; + double wx, wy; + nframes_t xdelta; + int direction = ev->direction; + + retry: + switch (direction) { + case GDK_SCROLL_UP: + temporal_zoom_step (true); + break; + + case GDK_SCROLL_DOWN: + temporal_zoom_step (false); + break; + + case GDK_SCROLL_LEFT: + xdelta = (current_page_frames() / 2); + if (leftmost_frame > xdelta) { + reset_x_origin (leftmost_frame - xdelta); + } else { + reset_x_origin (0); + } + break; + + case GDK_SCROLL_RIGHT: + xdelta = (current_page_frames() / 2); + if (max_frames - xdelta > leftmost_frame) { + reset_x_origin (leftmost_frame + xdelta); + } else { + reset_x_origin (max_frames - current_page_frames()); + } + break; + + default: + /* what? */ + break; + } + + return false; +} + +bool +Editor::time_canvas_scroll_event (GdkEventScroll *event) +{ + time_canvas.grab_focus(); + time_canvas_scroll (event); + return false; +} + +bool Editor::track_canvas_button_press_event (GdkEventButton *event) { selection->clear (); |