diff options
-rw-r--r-- | gtk2_ardour/automation_region_view.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 26 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/region_view.cc | 25 | ||||
-rw-r--r-- | gtk2_ardour/region_view.h | 2 |
5 files changed, 31 insertions, 28 deletions
diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc index cd734ac791..161b6a88d6 100644 --- a/gtk2_ardour/automation_region_view.cc +++ b/gtk2_ardour/automation_region_view.cc @@ -147,6 +147,10 @@ AutomationRegionView::add_automation_event (GdkEvent *, framepos_t when, double const double h = trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2; y = 1.0 - (y / h); + /* snap frame */ + + when = snap_frame_to_frame (when - _region->start ()); + /* map using line */ double when_d = when; diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 0900ecc34e..8fb14796e0 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -2360,32 +2360,6 @@ MidiRegionView::snap_pixel_to_frame(double x) return snap_frame_to_frame (editor.pixel_to_frame (x)); } -/** Snap a frame offset within our region using the current snap settings. - * @param x Frame offset from this region's position. - * @return Snapped frame offset from this region's position. - */ -frameoffset_t -MidiRegionView::snap_frame_to_frame (frameoffset_t x) const -{ - PublicEditor& editor = trackview.editor(); - - /* x is region relative, convert it to global absolute frames */ - framepos_t const session_frame = x + _region->position(); - - /* try a snap in either direction */ - framepos_t frame = session_frame; - editor.snap_to (frame, 0); - - /* if we went off the beginning of the region, snap forwards */ - if (frame < _region->position ()) { - frame = session_frame; - editor.snap_to (frame, 1); - } - - /* back to region relative */ - return frame - _region->position(); -} - double MidiRegionView::snap_to_pixel(double x) { diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index ffce48dea0..5eaef05b18 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -251,8 +251,6 @@ public: */ framepos_t snap_pixel_to_frame(double x); - ARDOUR::frameoffset_t snap_frame_to_frame (ARDOUR::frameoffset_t) const; - /** Convert a timestamp in beats into frames (both relative to region start) */ framepos_t region_beats_to_region_frames(double beats) const; /** Convert a timestamp in beats into absolute frames */ diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index df26452934..534c7ef0d6 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -950,3 +950,28 @@ RegionView::trim_contents (framepos_t frame_delta, bool left_direction, bool swa region_changed (PropertyChange (ARDOUR::Properties::start)); } +/** Snap a frame offset within our region using the current snap settings. + * @param x Frame offset from this region's position. + * @return Snapped frame offset from this region's position. + */ +frameoffset_t +RegionView::snap_frame_to_frame (frameoffset_t x) const +{ + PublicEditor& editor = trackview.editor(); + + /* x is region relative, convert it to global absolute frames */ + framepos_t const session_frame = x + _region->position(); + + /* try a snap in either direction */ + framepos_t frame = session_frame; + editor.snap_to (frame, 0); + + /* if we went off the beginning of the region, snap forwards */ + if (frame < _region->position ()) { + frame = session_frame; + editor.snap_to (frame, 1); + } + + /* back to region relative */ + return frame - _region->position(); +} diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index 896b3f26a0..901e2a8596 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -120,6 +120,8 @@ class RegionView : public TimeAxisViewItem void drop_silent_frames (); void hide_silent_frames (); + ARDOUR::frameoffset_t snap_frame_to_frame (ARDOUR::frameoffset_t) const; + protected: /** Allows derived types to specify their visibility requirements |