diff options
author | Ben Loftis <ben@harrisonconsoles.com> | 2018-05-08 09:03:20 -0500 |
---|---|---|
committer | Ben Loftis <ben@harrisonconsoles.com> | 2018-05-08 09:03:20 -0500 |
commit | c074c7ce525e459a772a7c1dbd0d5054627a8b62 (patch) | |
tree | 433c4a3449c64168b8b5b9ff30947daf746c7dc6 /gtk2_ardour | |
parent | a5d90c3d9d3cbace6dada563a7a2b0e3458bbef1 (diff) |
playhead_X_to_grid: Handle the case of GridTypeNone
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 36a67d0a01..7439ad353f 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -7350,13 +7350,24 @@ Editor::playhead_forward_to_grid () return; } - MusicSample pos (playhead_cursor->current_sample (), 0); + MusicSample pos (playhead_cursor->current_sample (), 0); - if (pos.sample < max_samplepos - 1) { - pos.sample += 2; - snap_to_internal (pos, RoundUpAlways, SnapToGrid, false, true); - _session->request_locate (pos.sample); + if ( _grid_type == GridTypeNone) { + if (pos.sample < max_samplepos - current_page_samples()*0.1) { + pos.sample += current_page_samples()*0.1; + _session->request_locate (pos.sample); + } else { + _session->request_locate (0); + } + } else { + + if (pos.sample < max_samplepos - 1) { + pos.sample += 2; + snap_to_internal (pos, RoundUpAlways, SnapToGrid, false, true); + _session->request_locate (pos.sample); + } } + /* keep PH visible in window */ if (pos.sample > (_leftmost_sample + current_page_samples() *0.9)) { @@ -7374,12 +7385,22 @@ Editor::playhead_backward_to_grid () MusicSample pos (playhead_cursor->current_sample (), 0); - if (pos.sample > 2) { - pos.sample -= 2; - snap_to_internal (pos, RoundDownAlways, SnapToGrid, false, true); - _session->request_locate (pos.sample); + if ( _grid_type == GridTypeNone) { + if ( pos.sample > current_page_samples()*0.1 ) { + pos.sample -= current_page_samples()*0.1; + _session->request_locate (pos.sample); + } else { + _session->request_locate (0); + } + } else { + + if (pos.sample > 2) { + pos.sample -= 2; + snap_to_internal (pos, RoundDownAlways, SnapToGrid, false, true); + _session->request_locate (pos.sample); + } } - + /* keep PH visible in window */ if (pos.sample < (_leftmost_sample + current_page_samples() *0.1)) { reset_x_origin (pos.sample - (current_page_samples()*0.1)); |