Fingerings disturb navigation with accessibility shortcuts in multi-voices context

• Jan 18, 2019 - 05:56
Reported version
3.0
Priority
P1 - High
Type
Functional
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
fixed
Regression
No
Workaround
No
Project

See details, gif and test file here: https://musescore.org/en/node/280807#comment-887427


Comments

It turns out the issue is only with Alt+Right, not Alt+Left. So to be clear, given a score like the following:

fingering-navigation.png

On beat 2, Alt+Right will go from the "D" in voice 1 to the fingering then straight on to the "E", skipping the "F" in voice 2, but Alt+Left working backwards will correctly go through all notes.

Status active PR created

See https://github.com/musescore/MuseScore/pull/5221

Turns out it isn't just fingering, really anything attached to a note, rest, or chord was having this effect. There are other problems with the navigation code due to the fact that the code for the Alt+left/right navigation was being developed simultaneously with some refactoring of the hierarchy of elements in the code, so a number of things that were working when the navigation code was developed was broken soon thereafter.

When the build is completed there will be a version available for testing at https://ci.appveyor.com/project/MuseScore/musescore/builds/25939590 (I think you'll need to clip the Artifacts tab once it is present)

PR updated to fix issue with fermata, also improve Alt+left/right behavior in presence of articulations and lyrics. Test build for Windows available at https://ci.appveyor.com/api/buildjobs/jq49ib2b431x46jw/artifacts/MuseSc….

This should fix all issues I know about with Alt+left/right (getting stuck on fermatas, skipping articulations and lyrics) but I wouldn't doubt there are others, as the code is pretty "fragile" and has probably been broken in subtle ways by other changes over the past couple of years.

Status PR created fixed

Fixed in branch master, commit 595be22c0c

_fix #282091: navigation with multiple voices + collect_artifacts

The navigation previously had special cases for accidentals and articulations
to bump up to the parent before proceeding, but this ignored fingerings.
The fix here generalizes the test to catch other elements with notes or rests as parents.
Also, since fermatas are now segment elements rather than articulations,
that test is moved to be with the other segment elements._