Hairpin with above placement moved onto staff jumps back on next layout

• May 16, 2019 - 09:21
Reported version
3.x-dev
Priority
P1 - High
Type
Functional
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
No
Workaround
Yes
Project

OS: Windows 10 (10.0), Arch.: x86_64, MuseScore version (64-bit): 3.1.0.6829, revision: 66b30c3

  1. Open the attached score and take the reset;
  2. Use Shift + drag to move the hairpin in measure 3 onto the staff and into the gap between voices 1 and 2 (and notice the unexpected movement of the slur in measure 7);
  3. Use Shift + drag to move the hairpin in measure 4 onto the staff and into the gap between voices 1 and 2;
    Result: After step 3, the hairpin in measure 3, unexpectedly repositions itself above the staff.
Attachment Size
beethoven_adagio.mscz 36.27 KB

Comments

Title Unexpected interaction between successive hairpins Hairpin with above placement moved onto staff jumps back on next layout
Priority P1 - High

It's actually not just moving the second hairpin that triggers this - any change that causes a relayout of the first system will cause the first hairpin to jump back above. So, I can reproduce from scratch as follows:

1) new score
2) add hairpin
3) press "X" to flip above staff
4) drag onto staff
5) enter a note in another measure on that system

Result: hairpin jumps back. Working on a fix.

BTW, the movement of the slur in measure 7 is unrelated and not a regression from 3.0.5 to 3.1. It's caused by fact that the reset is a bit
"incomplete" with respect to autoplace, so the slur is colliding with the string number. Any edit you do that causes the second system to be laid out again triggers the completion of the job - the slur moves to avoid the string number as it should have all along.

Workaround No Yes

https://github.com/musescore/MuseScore/pull/5025

As I mention in the PR comments, the issue is actually connected to the code that tries to align hairpins with dynamics, it was not handling the case of a missing dynamic plus hairpin placed above being moved onto the staff, but this was never an issue before because there was no direct way to have a hairpin on staff if autoplace was enabled. Also, it should have worked anyhow because we are supposed to turn off the alignment with dynamic for diagonal hairpins, but that wasn't working for hairpins placed above. Both of these issues are fixed by this PR. Meanwhile, workaround is to disable autoplace, which doesn't really have any other bad effect here.

Fix version
3.1.0