Slurs on the TAB Staff moves upward when inserting multiple measures

• Jan 23, 2021 - 12:11
Reported version
3.3
Type
Development
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
Yes
Workaround
Yes
Project

OS: macOS High Sierra (10.13)
Arch.: x86_64, MuseScore version (64-bit): 3.6.0.485472625
revision: 269baf7

Step to Reproduce:
1.Create Guitar Score (Guitar + Tablature)
2.Make some music with slurs

slur.jpg

3.Insert multiple measures via add -> Measures -> Insert Measures…
or just type shortcut key, shirt+i 2 times

Result:
Slurs on the TAB Staff moves upward
*It happens where after selected measures.

slur2.jpg

Attachment Size
slur.jpg 52.32 KB
slur2.jpg 52.17 KB

Comments

I figured at first this would be a layout glitch that fixed itself on relayout or reload, but no, it's worse, the tab slur is getting attached to the standard staff somehow. The code added in the commit referenced above is trying to hand;e linked staves somehow, but I don't really follow it, and anyhow, it doesn't work in this case.

Status PR created fixed

Fixed in branch 3.x, commit d9cf79ac59

_Fix #316137: Slurs on the TAB Staff move upward when inserting multiple measures

Resolves: https://musescore.org/en/node/316137.

In #5432, Score::undoChangeSpannerElements() was modified to allow for changing one or both of the elements to or from nullptr. However, in the case of a linked spanner, where we have to look for parallel elements in another track, we cannot use the track of the old spanner elements if they are null. A default track of 0 was arbitrarily chosen in this case, but that causes the spanner to be attached to the wrong staff. Fortunately, we can use the spanner's track() and track2() functions even if its elements are null._

Fixed in branch 3.6.1, commit 6b1932b203

_Fix #316137: Slurs on the TAB Staff move upward when inserting multiple measures

Resolves: https://musescore.org/en/node/316137.

In #5432, Score::undoChangeSpannerElements() was modified to allow for changing one or both of the elements to or from nullptr. However, in the case of a linked spanner, where we have to look for parallel elements in another track, we cannot use the track of the old spanner elements if they are null. A default track of 0 was arbitrarily chosen in this case, but that causes the spanner to be attached to the wrong staff. Fortunately, we can use the spanner's track() and track2() functions even if its elements are null._

Fix version
3.6.1