From 1bde5eabc6258655c1f3baeca61d79f32d270914 Mon Sep 17 00:00:00 2001 From: Sampo Savolainen Date: Fri, 31 Mar 2006 22:31:59 +0000 Subject: [PATCH] Splitting a region doesn't affect layering: the two remaining pieces will stay in the same place as the original one when compared to other regions on the playlist. git-svn-id: svn://localhost/trunk/ardour2@436 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/playlist.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 1c34099c7e..73be1da86d 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -998,9 +998,21 @@ Playlist::split_region (Region& region, jack_nframes_t playlist_position) _session.region_name (after_name, region.name(), false); right = createRegion (region, before, after, after_name, region.layer(), Region::Flag (region.flags()|Region::RightOfSplit)); - + add_region_internal (left, region.position(), true); add_region_internal (right, region.position() + before); + + uint64_t orig_layer_op = region.last_layer_op(); + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->last_layer_op() > orig_layer_op) { + (*i)->set_last_layer_op( (*i)->last_layer_op() + 1 ); + } + } + + left->set_last_layer_op ( orig_layer_op ); + right->set_last_layer_op ( orig_layer_op + 1); + + layer_op_counter++; finalize_split_region (®ion, left, right);