Paste uses exact beats. rework _start_beats calculation in copy-with-offset ctor.
[ardour.git] / gtk2_ardour / editor_drag.cc
index d87388e888a96cabeff3dd86f010399578b21999..212c02513fd05a87df1071e6be26f806a6310e9a 100644 (file)
@@ -1256,8 +1256,8 @@ RegionMoveDrag::motion (GdkEvent* event, bool first_move)
                        MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(rv);
 
                        const boost::shared_ptr<const Region> original = rv->region();
-                       boost::shared_ptr<Region> region_copy = RegionFactory::create (original, true);
-                       region_copy->set_position (original->position(), _editor->get_grid_music_divisions (event->button.state));
+                       boost::shared_ptr<Region> region_copy = RegionFactory::create (original, true
+                                                                                      , _editor->get_grid_music_divisions (event->button.state));
                        /* need to set this so that the drop zone code can work. This doesn't
                           actually put the region into the playlist, but just sets a weak pointer
                           to it.
@@ -1478,7 +1478,9 @@ RegionMoveDrag::finished_copy (bool const changed_position, bool const /*changed
                }
 
                if (dest_rtv != 0) {
-                       RegionView* new_view = insert_region_into_playlist (i->view->region(), dest_rtv, i->layer, where, modified_playlists);
+                       RegionView* new_view = insert_region_into_playlist (i->view->region(), dest_rtv, i->layer, where,
+                                                                           modified_playlists, _editor->get_grid_music_divisions (ev_state));
+
                        if (new_view != 0) {
                                new_views.push_back (new_view);
                        }
@@ -1574,7 +1576,8 @@ RegionMoveDrag::finished_no_copy (
                        /* insert into new playlist */
 
                        RegionView* new_view = insert_region_into_playlist (
-                               RegionFactory::create (rv->region (), true), dest_rtv, dest_layer, where, modified_playlists
+                               RegionFactory::create (rv->region (), true), dest_rtv, dest_layer, where,
+                               modified_playlists, _editor->get_grid_music_divisions (ev_state)
                                );
 
                        if (new_view == 0) {
@@ -1737,7 +1740,8 @@ RegionMoveDrag::insert_region_into_playlist (
        RouteTimeAxisView* dest_rtv,
        layer_t dest_layer,
        framecnt_t where,
-       PlaylistSet& modified_playlists
+       PlaylistSet& modified_playlists,
+       const int32_t& sub_num
        )
 {
        boost::shared_ptr<Playlist> dest_playlist = dest_rtv->playlist ();
@@ -1754,8 +1758,7 @@ RegionMoveDrag::insert_region_into_playlist (
        if (r.second) {
                dest_playlist->clear_changes ();
        }
-
-       dest_playlist->add_region (region, where);
+       dest_playlist->add_region (region, where, 1.0, false, sub_num);
 
        if (dest_rtv->view()->layer_display() == Stacked || dest_rtv->view()->layer_display() == Expanded) {
                dest_playlist->set_layer (region, dest_layer);
@@ -2323,7 +2326,7 @@ RegionCreateDrag::motion (GdkEvent* event, bool first_move)
                        */
 
                        framecnt_t const len = (framecnt_t) fabs ((double)(f - grab_frame () - 1));
-                       _region->set_length (len < 1 ? 1 : len);
+                       _region->set_length (len < 1 ? 1 : len, _editor->get_grid_music_divisions (event->button.state));
                }
        }
 }
@@ -2934,7 +2937,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
 
        case EndTrim:
                for (list<DraggingView>::iterator i = _views.begin(); i != _views.end(); ++i) {
-                       bool changed = i->view->trim_end (i->initial_end + dt, non_overlap_trim);
+                       bool changed = i->view->trim_end (i->initial_end + dt, non_overlap_trim, _editor->get_grid_music_divisions (event->button.state));
                        if (changed && _preserve_fade_anchor) {
                                AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
                                if (arv) {
@@ -6333,7 +6336,7 @@ RegionCutDrag::motion (GdkEvent*, bool)
 }
 
 void
-RegionCutDrag::finished (GdkEvent*, bool)
+RegionCutDrag::finished (GdkEvent* event, bool)
 {
        _editor->get_track_canvas()->canvas()->re_enter();
 
@@ -6347,7 +6350,7 @@ RegionCutDrag::finished (GdkEvent*, bool)
                return;
        }
 
-       _editor->split_regions_at (pos, rs);
+       _editor->split_regions_at (pos, rs, _editor->get_grid_music_divisions (event->button.state));
 }
 
 void