Delete of global time signature after local causes corruption

• Mar 20, 2015 - 18:48
P1 - High
S3 - Major

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.


Status (old) fixed postponed

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

Status active closed
Regression No
Workaround No

What is wrong with deleting local time signature in Measure 2? It gives predictable results.

screencast 2018-11-13 17-42-40.gif

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.

Status closed active
Priority P1 - High

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.