summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_mixer.cc23
1 files changed, 19 insertions, 4 deletions
diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc
index d3c40418fa..4d9b4b6acb 100644
--- a/gtk2_ardour/editor_mixer.cc
+++ b/gtk2_ardour/editor_mixer.cc
@@ -248,15 +248,30 @@ Editor::update_current_screen ()
} else {
if (frame < leftmost_frame) {
- /* moving left: end up with the playhead 3/4 of the way along the page */
- nframes64_t l = frame - (3 * current_page_frames() / 4);
+ /* moving left */
+ nframes64_t l = 0;
+ if (_session->transport_rolling()) {
+ /* rolling; end up with the playhead at the right of the page */
+ l = frame - current_page_frames ();
+ } else {
+ /* not rolling: end up with the playhead 3/4 of the way along the page */
+ l = frame - (3 * current_page_frames() / 4);
+ }
+
if (l < 0) {
l = 0;
}
+
center_screen_internal (l + (current_page_frames() / 2), current_page_frames ());
} else {
- /* moving right: end up with the playhead 1/4 of the way along the page */
- center_screen_internal (frame + (current_page_frames() / 4), current_page_frames ());
+ /* moving right */
+ if (_session->transport_rolling()) {
+ /* rolling: end up with the playhead on the left of the page */
+ center_screen_internal (frame + (current_page_frames() / 2), current_page_frames ());
+ } else {
+ /* not rolling: end up with the playhead 1/4 of the way along the page */
+ center_screen_internal (frame + (current_page_frames() / 4), current_page_frames ());
+ }
}
}
}