X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fregion_view.cc;h=75e091f2d02ec68334a96fcee6ab2c43fe625be9;hb=aefd089b888d088160a00f2769cdfa383e3e67a4;hp=be96cd4058bb0b4fbbec286abd7aaae57eecaacd;hpb=ced4378d0914bcfb926267772c45d1d23f3bed38;p=ardour.git diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index be96cd4058..75e091f2d0 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -939,10 +939,12 @@ RegionView::move_contents (frameoffset_t distance) /** Snap a frame offset within our region using the current snap settings. * @param x Frame offset from this region's position. + * @param ensure_snap whether to ignore snap_mode (in the case of SnapOff) and magnetic snap. + * Used when inverting snap mode logic with key modifiers, or snap distance calculation. * @return Snapped frame offset from this region's position. */ frameoffset_t -RegionView::snap_frame_to_frame (frameoffset_t x) const +RegionView::snap_frame_to_frame (frameoffset_t x, bool ensure_snap) const { PublicEditor& editor = trackview.editor(); @@ -951,12 +953,12 @@ RegionView::snap_frame_to_frame (frameoffset_t x) const /* try a snap in either direction */ framepos_t frame = session_frame; - editor.snap_to (frame, RoundNearest); + editor.snap_to (frame, RoundNearest, false, ensure_snap); /* if we went off the beginning of the region, snap forwards */ if (frame < _region->position ()) { frame = session_frame; - editor.snap_to (frame, RoundUpAlways); + editor.snap_to (frame, RoundUpAlways, false, ensure_snap); } /* back to region relative */