summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2018-05-08 09:03:20 -0500
committerBen Loftis <ben@harrisonconsoles.com>2018-05-08 09:03:20 -0500
commitc074c7ce525e459a772a7c1dbd0d5054627a8b62 (patch)
tree433c4a3449c64168b8b5b9ff30947daf746c7dc6 /gtk2_ardour/editor_ops.cc
parenta5d90c3d9d3cbace6dada563a7a2b0e3458bbef1 (diff)
playhead_X_to_grid: Handle the case of GridTypeNone
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r--gtk2_ardour/editor_ops.cc41
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));