summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_canvas_events.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-12-27 16:42:58 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-12-27 16:42:58 +0000
commita29a7b7bef6713931f130a295cefd20fb0f21d3b (patch)
tree6f123a5de0c9cae7b86f6e89ac3cfa6eebfc3274 /gtk2_ardour/editor_canvas_events.cc
parent95f823b02a0e770eff49e6a63535cf72ef08acfe (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.cc53
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 ();