Fix crash when deleting selected region-view in ripple mode #7764

Changing the playlist (remove_region) invalidates selection and
unsets `clicked_regionview`. The region to operate on needs
to be stored for later use.
This commit is contained in:
Robin Gareus 2019-05-27 14:10:59 +02:00
parent 8cce89664c
commit b1587940e4
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -4456,12 +4456,15 @@ Editor::remove_clicked_region ()
begin_reversible_command (_("remove region"));
boost::shared_ptr<Playlist> playlist = clicked_routeview->playlist();
boost::shared_ptr<Region> region = clicked_regionview->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>());
playlist->remove_region (region);
if (Config->get_edit_mode() == Ripple) {
playlist->ripple (region->position(), - 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.