Merge branch 'ripple-mode-cc' into cairocanvas
[ardour.git] / gtk2_ardour / editor_ops.cc
index 4882ac1fc39e836bba6d1ff25c328dfd7f2886a7..45568bdb3c9e1666608edf676c172548602ca5ef 100644 (file)
@@ -2110,6 +2110,8 @@ Editor::unhide_ranges ()
        }
 }
 
+/* INSERT/REPLACE */
+
 void
 Editor::insert_region_list_selection (float times)
 {
@@ -2142,6 +2144,9 @@ Editor::insert_region_list_selection (float times)
        begin_reversible_command (_("insert region"));
        playlist->clear_changes ();
        playlist->add_region ((RegionFactory::create (region, true)), get_preferred_edit_position(), times);
+       if (Config->get_edit_mode() == Ripple)
+               playlist->ripple (get_preferred_edit_position(), region->length() * times, boost::shared_ptr<Region>());
+
        _session->add_command(new StatefulDiffCommand (playlist));
        commit_reversible_command ();
 }
@@ -3726,7 +3731,7 @@ Editor::can_cut_copy () const
 
 
 /** Cut, copy or clear selected regions, automation points or a time range.
- * @param op Operation (Cut, Copy or Clear)
+ * @param op Operation (Delete, Cut, Copy or Clear)
  */
 void
 Editor::cut_copy (CutCopyOp op)
@@ -3762,7 +3767,7 @@ Editor::cut_copy (CutCopyOp op)
                }
        }
 
-       if ( op != Clear )  //"Delete" doesn't change copy/paste buf
+       if ( op != Delete )  //"Delete" doesn't change copy/paste buf
                cut_buffer->clear ();
 
        if (entered_marker) {
@@ -4002,10 +4007,11 @@ Editor::remove_clicked_region ()
 
        boost::shared_ptr<Playlist> playlist = clicked_routeview->playlist();
 
-       begin_reversible_command (_("remove region"));
        playlist->clear_changes ();
        playlist->clear_owned_changes ();
        playlist->remove_region (clicked_regionview->region());
+       if (Config->get_edit_mode() == Ripple)
+               playlist->ripple (clicked_regionview->region()->position(), -clicked_regionview->region()->length(), boost::shared_ptr<Region>());
 
        /* We might have removed regions, which alters other regions' layering_index,
           so we need to do a recursive diff here.
@@ -4068,6 +4074,9 @@ Editor::remove_selected_regions ()
                playlist->clear_owned_changes ();
                playlist->freeze ();
                playlist->remove_region (*rl);
+               if (Config->get_edit_mode() == Ripple)
+                       playlist->ripple ((*rl)->position(), -(*rl)->length(), boost::shared_ptr<Region>());
+
        }
 
        vector<boost::shared_ptr<Playlist> >::iterator pl;
@@ -4197,12 +4206,16 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
                switch (op) {
                case Delete:
                        pl->remove_region (r);
+                       if (Config->get_edit_mode() == Ripple)
+                               pl->ripple (r->position(), -r->length(), boost::shared_ptr<Region>());
                        break;
                        
                case Cut:
                        _xx = RegionFactory::create (r);
                        npl->add_region (_xx, r->position() - first_position);
                        pl->remove_region (r);
+                       if (Config->get_edit_mode() == Ripple)
+                               pl->ripple (r->position(), -r->length(), boost::shared_ptr<Region>());
                        break;
 
                case Copy:
@@ -4211,7 +4224,9 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
                        break;
 
                case Clear:
-                       pl->remove_region (r);  
+                       pl->remove_region (r);
+                       if (Config->get_edit_mode() == Ripple)
+                               pl->ripple (r->position(), -r->length(), boost::shared_ptr<Region>());
                        break;
                }