Cross-Measure Beam Custom Position Not Restored

• Sep 9, 2019 - 17:29
Reported version
3.2
Priority
P2 - Medium
Type
Functional
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
fixed
Regression
No
Workaround
No
Project

Comments

Title Cross-Staff, Cross-Bar Note Barline Custom Position Not Saved Cross-Staff, Cross-Bar Note Beam Custom Position Not Saved
Severity S4 - Minor S3 - Major
Priority P2 - Medium

Steps to reproduce:

1) new piano score, 4/4
2) enter second-space C eighth notes to fill bottom staff of first two measures
3) use Shift+Up to move last eighth of first measure to top staff
4) set that note to beam start to break the beam there
5) set first note of second measure to beam middle to create a cross-bar beam
6) make a manual adjustment to the beam
7) save
8) reload

Result: the manual adjustment is gone.

It's loss of information with no good workaround, but luckily a fairly corner case situation. The first note of the group has to be cross staff to trigger the bug as far I can tell.

Title Cross-Staff, Cross-Bar Note Beam Custom Position Not Saved Cross-Measure Beam Custom Position Not Restored
Status active PR created

It is not necessary for any of the chords involved to be cross-staff in order to trigger this bug. And as Marc pointed out in the other thread, the custom position is saved, but then discarded upon reload. And as far as I can tell, this happens only when the first chord in the cross-measure beam is the last chord in the measure for that particular track.

Here is a PR that fixes this issue: https://github.com/musescore/MuseScore/pull/5317.

Status PR created fixed

Fixed in branch master, commit 74421ac00b

_fix #294297: Cross-Measure Beam Custom Position Not Restored

When a beam is created in Measure::readVoice(), it will initially contain only one element. Later, during layout, Score::createBeams() will fill in the remaining elements of the beam. This commit basically reverts 932257f and 08c583f, and implements a slightly different take on a fix for https://musescore.org/en/node/285100 that looks at beamMode of the next ChordRest rather than the elements in a beam that may not yet have been filled._

Fix version
3.3.0