diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-11 17:21:00 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-11 17:21:00 +0000 |
commit | 24593ea7308346f54a8d51a367e20fc880432671 (patch) | |
tree | 63005dbce2dbfe4f3c5a7cb2b66fc1a7d3f207d8 /gtk2_ardour/editor_canvas_events.cc | |
parent | d89d58947654991e3e371a325faa8daf6c5a82b9 (diff) |
make SCROLL_{RIGHT,LEFT} work, and Alt-SCROLL_{UP,DOWN} do something sensible
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2778 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_canvas_events.cc')
-rw-r--r-- | gtk2_ardour/editor_canvas_events.cc | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 0c84a633fa..2a24eb3d73 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -52,8 +52,11 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) { int x, y; double wx, wy; + nframes_t xdelta; + int direction = ev->direction; - switch (ev->direction) { + retry: + switch (direction) { case GDK_SCROLL_UP: if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { //if (ev->state == GDK_CONTROL_MASK) { @@ -75,6 +78,9 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) nframes_t where = event_frame (&event, 0, 0); temporal_zoom_to_frame (false, where); return true; + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + direction = GDK_SCROLL_LEFT; + goto retry; } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (mem_fun(*this, &Editor::track_height_step_timeout), 500); @@ -90,6 +96,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) return true; } break; + case GDK_SCROLL_DOWN: if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { //if (ev->state == GDK_CONTROL_MASK) { @@ -106,6 +113,9 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) nframes_t where = event_frame (&event, 0, 0); temporal_zoom_to_frame (true, where); return true; + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + direction = GDK_SCROLL_RIGHT; + goto retry; } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (mem_fun(*this, &Editor::track_height_step_timeout), 500); @@ -122,8 +132,26 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) } 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: - /* no left/right handling yet */ + /* what? */ break; } |