Implement configurable region selection after split
Implement the configured behaviour of region selection after split.
This commit is contained in:
parent
d4a3141927
commit
1823126408
|
@ -241,12 +241,35 @@ Editor::split_regions_at (framepos_t where, RegionSelection& regions)
|
||||||
EditorThaw(); /* Emit Signal */
|
EditorThaw(); /* Emit Signal */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ARDOUR::Profile->get_mixbus()) {
|
if (working_on_selection) {
|
||||||
//IFF we were working on selected regions, try to reinstate the other region selections that existed before the freeze/thaw.
|
// IFF we were working on selected regions, try to reinstate the other region selections that existed before the freeze/thaw.
|
||||||
_ignore_follow_edits = true; //a split will change the region selection in mysterious ways; its not practical or wanted to follow this edit
|
|
||||||
if( working_on_selection ) {
|
_ignore_follow_edits = true; // a split will change the region selection in mysterious ways; it's not practical or wanted to follow this edit
|
||||||
|
RegionSelectionAfterSplit rsas = Config->get_region_selection_after_split();
|
||||||
|
/* There are three classes of regions that we might want selected after
|
||||||
|
splitting selected regions:
|
||||||
|
- regions selected before the split operation, and unaffected by it
|
||||||
|
- newly-created regions before the split
|
||||||
|
- newly-created regions after the split
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (rsas & Existing) {
|
||||||
|
// region selections that existed before the split.
|
||||||
selection->add ( pre_selected_regions );
|
selection->add ( pre_selected_regions );
|
||||||
selection->add (latest_regionviews); //these are the new regions created after the split
|
}
|
||||||
|
|
||||||
|
for (RegionSelection::iterator ri = latest_regionviews.begin(); ri != latest_regionviews.end(); ri++) {
|
||||||
|
if ((*ri)->region()->position() < where) {
|
||||||
|
// new regions created before the split
|
||||||
|
if (rsas & NewlyCreatedLeft) {
|
||||||
|
selection->add (*ri);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// new regions created after the split
|
||||||
|
if (rsas & NewlyCreatedRight) {
|
||||||
|
selection->add (*ri);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ignore_follow_edits = false;
|
_ignore_follow_edits = false;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user