Merge branch 'ardour'
This commit is contained in:
commit
5bcf0a5910
@ -4937,11 +4937,10 @@ Editor::remove_clicked_region ()
|
||||
playlist->remove_region (region);
|
||||
|
||||
if (should_ripple()) {
|
||||
do_ripple (playlist, region->position(), - region->length(), std::shared_ptr<Region>(), true);
|
||||
} else {
|
||||
playlist->rdiff_and_add_command (_session);
|
||||
do_ripple (playlist, region->position(), - region->length(), std::shared_ptr<Region>(), false);
|
||||
}
|
||||
|
||||
playlist->rdiff_and_add_command (_session);
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -5009,6 +5008,13 @@ Editor::remove_regions (const RegionSelection& sel, bool can_ripple, bool as_par
|
||||
|
||||
vector<std::shared_ptr<Playlist> > playlists;
|
||||
|
||||
if (!as_part_of_other_command) {
|
||||
/* we need to start the undo coammd here, since
|
||||
* other playlists maybe modified as result of a ripple
|
||||
*/
|
||||
begin_reversible_command (_("remove regions"));
|
||||
}
|
||||
|
||||
for (list<std::shared_ptr<Region> >::iterator rl = regions_to_remove.begin(); rl != regions_to_remove.end(); ++rl) {
|
||||
|
||||
std::shared_ptr<Playlist> playlist = (*rl)->playlist();
|
||||
@ -5018,16 +5024,14 @@ Editor::remove_regions (const RegionSelection& sel, bool can_ripple, bool as_par
|
||||
continue;
|
||||
}
|
||||
|
||||
/* get_regions_from_selection_and_entered() guarantees that
|
||||
the playlists involved are unique, so there is no need
|
||||
to check here.
|
||||
*/
|
||||
if (std::find (playlists.begin(), playlists.end(), playlist) == playlists.end()) {
|
||||
playlists.push_back (playlist);
|
||||
|
||||
playlists.push_back (playlist);
|
||||
playlist->clear_changes ();
|
||||
playlist->clear_owned_changes ();
|
||||
playlist->freeze ();
|
||||
}
|
||||
|
||||
playlist->clear_changes ();
|
||||
playlist->clear_owned_changes ();
|
||||
playlist->freeze ();
|
||||
playlist->remove_region (*rl);
|
||||
|
||||
if (can_ripple && should_ripple()) {
|
||||
@ -5036,27 +5040,24 @@ Editor::remove_regions (const RegionSelection& sel, bool can_ripple, bool as_par
|
||||
}
|
||||
|
||||
vector<std::shared_ptr<Playlist> >::iterator pl;
|
||||
bool in_command = false;
|
||||
|
||||
bool commit_result = false;
|
||||
|
||||
for (pl = playlists.begin(); pl != playlists.end(); ++pl) {
|
||||
commit_result = true;
|
||||
(*pl)->thaw ();
|
||||
|
||||
/* We might have removed regions, which alters other regions' layering_index,
|
||||
so we need to do a recursive diff here.
|
||||
*/
|
||||
|
||||
if (!in_command && !as_part_of_other_command) {
|
||||
begin_reversible_command (_("remove region"));
|
||||
in_command = true;
|
||||
}
|
||||
vector<Command*> cmds;
|
||||
(*pl)->rdiff (cmds);
|
||||
_session->add_commands (cmds);
|
||||
|
||||
_session->add_command(new StatefulDiffCommand (*pl));
|
||||
}
|
||||
|
||||
if (in_command && !as_part_of_other_command) {
|
||||
if (commit_result && !as_part_of_other_command) {
|
||||
commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user