The past week I have been been fixing voice copy paste issues and adding a voice filter.
I have fixed most of the issues with copy and paste of notes with optional voices. The only thing left that could be changed is cleaning up rests after a paste. A paste with rests in voice 2 can fragment the whole rest which could stay a whole rest. Sometimes this might be expected so this is open for discussion.
I have added the filter of voices for both copy and delete operations. The fix to copy paste helped incredibly, all the filter had to do was not include the voice in the mime xml. One can use the filter by checking or unchecking the 4 checkboxes in the Selection Filter tab. By default all checkboxes are checked meaning that all voices are copied and removed.
We can now remove a single voice by unchecking all voices that should stay, making a range selection to be deleted and pressing delete. The PR is tested and ready to be merged.
It looks like this PR partially solves the following issues:
This PR fixed the picking the end of the range selection. Before
nextCR was called which sometimes returned segments not right after the end of a chordrest.
I have written a new function
nextSegmentAfterCR which replaces those calls when necessary.
I have also fixed the transition from a single selection to a range one. The previous code only worked correctly for rests, giving a wrong result for notes and other element types.
Tasks in the upcoming week
In the last week I will be adding any comments, correcting style issues with the code I have written. I will also finish up the Selection document which can be found here.