summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2015-05-17 04:26:05 +1000
committernick_m <mainsbridge@gmail.com>2015-05-17 04:26:05 +1000
commit91a34c596d1bb72f33ccaa17d6ebfa3a435f629c (patch)
treee4597f925fb4f65d7aba9b52eac61f13095f418b /gtk2_ardour/editor.cc
parentbbafb8f137bd9f8a18a7242e2628d309a1f8f991 (diff)
Relative snap - support magnetic mode (hackishly for now)
Diffstat (limited to 'gtk2_ardour/editor.cc')
-rw-r--r--gtk2_ardour/editor.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 60aa58dbb0..a45e243da5 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -2654,6 +2654,16 @@ Editor::snap_to (framepos_t& start, RoundMode direction, bool for_mark)
}
void
+Editor::snap_to_no_magnets (framepos_t& start, RoundMode direction, bool for_mark)
+{
+ if (!_session || _snap_mode == SnapOff) {
+ return;
+ }
+
+ snap_to_internal (start, direction, for_mark, true);
+}
+
+void
Editor::timecode_snap_to_internal (framepos_t& start, RoundMode direction, bool /*for_mark*/)
{
const framepos_t one_timecode_second = (framepos_t)(rint(_session->timecode_frames_per_second()) * _session->frames_per_timecode_frame());
@@ -2720,7 +2730,7 @@ Editor::timecode_snap_to_internal (framepos_t& start, RoundMode direction, bool
}
void
-Editor::snap_to_internal (framepos_t& start, RoundMode direction, bool for_mark)
+Editor::snap_to_internal (framepos_t& start, RoundMode direction, bool for_mark, bool no_magnets)
{
const framepos_t one_second = _session->frame_rate();
const framepos_t one_minute = _session->frame_rate() * 60;
@@ -2890,6 +2900,10 @@ Editor::snap_to_internal (framepos_t& start, RoundMode direction, bool for_mark)
case SnapMagnetic:
+ if (no_magnets) {
+ return;
+ }
+
if (presnap > start) {
if (presnap > (start + pixel_to_sample(snap_threshold))) {
start = presnap;