gtk2_ardour: implement "Unlink from unselected" for MIDI regions

An attempt to satisfy #8848.

Add a new action, "fork-regions-from-unselected", which unlinks all
selected MIDI regions from any unselected regions, but maintains links
within the selection, and add the new action to the region MIDI context
menu as "Unlink from unselected". Rename the existing "fork-region" action
to "fork-selected-regions", and amend the existing "Unlink from other
copies" menu item to "Unlink all selected regions" to (try to) clarify the
difference.

Attach the <Tertiary>U default key-binding to the new action: I personally
think it's generally slightly more useful (otherwise I wouldn't have
implemented it), though I'm not that fussed.

In the case that there's only one MIDI region selected, or that none of
the selected regions are mutually linked, both actions will have exactly
the same result. Ideally, we'd only show a single menu item in this case,
but that would require (a) implementing a function to check whether the
selection contains any linked regions, and (b) making the region MIDI
context sub-menu dynamically generated, so that it can change based on the
result of that function, neither of which I've tried to do yet.
This commit is contained in:
Colin Fletcher 2022-01-02 22:22:45 +00:00 committed by Paul Davis
parent b8f21b2acf
commit 31640a9a5b
6 changed files with 95 additions and 7 deletions

View file

@ -1368,7 +1368,8 @@ private:
void transpose_region ();
void transpose_regions (const RegionSelection& rs);
void insert_patch_change (bool from_context);
void fork_region ();
void fork_selected_regions ();
void fork_regions_from_unselected ();
void do_insert_time ();
void insert_time (Temporal::timepos_t const &, Temporal::timecnt_t const &, Editing::InsertTimeOption, bool, bool, bool, bool, bool, bool);