diff options
author | Robin Gareus <robin@gareus.org> | 2019-05-27 14:10:59 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-05-27 14:10:59 +0200 |
commit | b1587940e46d220a696d6cf11b9b0efd3b144b85 (patch) | |
tree | b4da77c0385bb3716d4ded3f5c1283dc4c593e31 /gtk2_ardour/editor_ops.cc | |
parent | 8cce89664c46f29b65b0914d85e1cd8d944e4cb9 (diff) |
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.
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 306bf4f906..1c9df29d3d 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -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. |