Fix placement of automation child tracks.
[ardour.git] / gtk2_ardour / editor_mouse.cc
index 7a05fcdc56a0e1925fdec16f33f6c4b6ffa36be6..d0931e4579bdbf416eb5350fcbf09e1d76541ed4 100644 (file)
@@ -3212,9 +3212,8 @@ Editor::possibly_copy_regions_during_grab (GdkEvent* event)
                                continue;
                        }
 
-                       const boost::shared_ptr<const Region> original = arv->region();
+                       const boost::shared_ptr<const Region> original = rv->region();
                        boost::shared_ptr<Region> region_copy = RegionFactory::create (original);
-                       boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (region_copy);
 
                        nrv->get_canvas_group()->show ();
                        new_regionviews.push_back (nrv);
@@ -3918,15 +3917,19 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
                           disappear on copying regions 
                        */
                
-                       //rv->get_time_axis_view().reveal_dependent_views (*rv);
+                       //rv->get_time_axis_view().reveal_dependent_views (*rv);
                
-               } else if (changed_tracks) {
+               } else if (changed_tracks && dest_rtv->playlist()) {
                        new_region = RegionFactory::create (rv->region());
                }
 
                if (changed_tracks || drag_info.copy) {
 
                        boost::shared_ptr<Playlist> to_playlist = dest_rtv->playlist();
+                       if (!to_playlist) {
+                               ++i;
+                               continue;
+                       }
 
                        latest_regionviews.clear ();
 
@@ -5546,10 +5549,6 @@ Editor::mouse_brush_insert_region (RegionView* rv, nframes64_t pos)
 {
        /* no brushing without a useful snap setting */
 
-       // FIXME
-       AudioRegionView* arv = dynamic_cast<AudioRegionView*>(rv);
-       assert(arv);
-
        switch (snap_mode) {
        case SnapMagnetic:
                return; /* can't work because it allows region to be placed anywhere */
@@ -5571,7 +5570,7 @@ Editor::mouse_brush_insert_region (RegionView* rv, nframes64_t pos)
                return;
        }
 
-       RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&arv->get_time_axis_view());
+       RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&rv->get_time_axis_view());
 
        if (rtv == 0 || !rtv->is_track()) {
                return;
@@ -5581,7 +5580,7 @@ Editor::mouse_brush_insert_region (RegionView* rv, nframes64_t pos)
        double speed = rtv->get_diskstream()->speed();
        
        XMLNode &before = playlist->get_state();
-       playlist->add_region (boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (arv->audio_region())), (nframes64_t) (pos * speed));
+       playlist->add_region (RegionFactory::create (rv->region()), (nframes64_t) (pos * speed));
        XMLNode &after = playlist->get_state();
        session->add_command(new MementoCommand<Playlist>(*playlist.get(), &before, &after));