Delete of global time signature after local causes corruption
GIT commit: 22b2c66
1) score in 4/4
2) ctrl+drag (local) 6/8 to measure 2
3) drag (global) 2/4 to measure 3
4) optional add notes to measure 3
5) select the 3/4
6) delete
Result: corruption. Specifics differ according to whether you entered notes at step 4 or not. It's actually two different bugs. If you do enter notes, we should have prevented the deletion, but the detection code misses that case because of a quirk in how the time signagtures is deleted (we delete the segment but not the individual time signatures). The second is because we get the measure rest durations wrong when rewriting. Because of the way adding versus deleting time signatures is implemented, the rewriting code can't get both right when local time signatures are involved. It's one or the other. Adding works already, so it is easier to fix things up in cmdRemoveTimeSig().
PR forthcoming.
Comments
https://github.com/musescore/MuseScore/pull/1909
Fixed in 1e6c3b7e70
The fix handles the case where the measures are empty - the only case that is supposed to actually *work*. The case where there are notes there should trigger an error message, but it turns out the change I tried making to fix that broke something else. So we're going to live with this for 2.0
as 2.0 is released...
What is wrong with deleting local time signature in Measure 2? It gives predictable results.
I don't see any local time signature here. Again, that means, a staff that has different time signature than other staves at the same point in the score.
Definitely still an issue in 2.3.2 as well as 3.0 following my original instructions, keeping in mind that "local" means adding to one staff only, and the bug only affects the case where there are notes in the measure, and realizing I had a typo at step 5) apparently and meant to delete the 2/4.
So to clarify the steps:
1) new score with at least two staves, in 4/4
2) ctrl+drag 6/8 to measure 2 top staff, thus creating a local time signature change there
3) drag 2/4 to measure 3 (either staff), thus creating a global time signature change there
4) add notes starting in measure 3, top staff (a series of eight eighth notes, thus spanning measures 3-4)
5) select the 2/4, top staff
6) delete
Result: corruption - measure 3 top staff now shows 8 eighth notes instead of 6. Attempting to edit that measure further product the usual mess we see with corruption. Try, for instance, entering a series of dotted quarters starting at that location. Here's the result:
My earlier fix correctly handled the case where you skip step 4 - where measure 3 is empty. The intended result was that deleting the 2/4 would simply fail with an error message if there were notes there would fail, but apparently I was unable to get that to happen without breaking something else, so we've been living with this corruption ever since. Thus contributing to the (not inaccurate) perception that local time signatures are very buggy.