MuseScore
MuseScore copied to clipboard
Fix #25070: support copy-paste in local time signatures
Resolves: #25070
Support copy/paste in local time signatures, with the restriction that the source and destination ranges must all have the same time stretch ratio. Also enables features like "repeat selection", Alt+drag range copies, and explode which are built on copy/paste internally.
Tested:
- [x] Tuplets
- [x] Dynamics etc.
- [x] Spanners/lines
- [x] Multiple voices
- [x] Multiple staves
- [x] Explode/implode
- [x] Paste double/half duration
- [x] Working on the measure before a local time sig change
- [x] The measure after a local time sig change
- [x] The last measure
Some other minor changes in this PR:
- Adds a natvis file for the Visual Studio debugger with visualizers for a few common types such as
Fraction. - Fixes a handful of debug-only asserts that I ran into.
- Use the "forbidden" cursor (🚫) when Alt+dragging to a location that you can't drop in (either because of local time signatures or another reason).
- Setup time ticks properly for local time signatures (so Alt+drag will work).
- Show error dialogs for explode/implode and repeat-selection when we can't do it due to local time signatures.
- [x] I signed the CLA
- [x] The title of the PR describes the problem it addresses
- [x] Each commit's message describes its purpose and effects, and references the issue it resolves
- [x] If changes are extensive, there is a sequence of easily reviewable commits
- [x] The code in the PR follows the coding rules
- [x] There are no unnecessary changes
- [x] The code compiles and runs on my machine, preferably after each commit individually
- [ ] I created a unit test or vtest to verify the changes I made (if applicable)