invisible notes and rests remain part of the skyline

• Oct 22, 2018 - 16:19
Reported version
3.0
Priority
P1 - High
Type
Functional
Severity
S3 - Major
Status
closed
Regression
No
Workaround
No
Project

fc927fa, selfbuilt, Windows 7, QtCreator, MinGW, Qt 5.12 beta2


Comments

Status (old) needs info active
Status needs info active

Yes, they do:
skyline.png
see the "Em" in comparison to the "C"
And no, that PR is not the culprit, it got merged after my report

Strange... I remember playing with buildBspTree and true/false parameter did the job to exclude hidden elements from the autoplacement algorithm...

Severity S4 - Minor S3 - Major
Priority P2 - Medium
Regression No
Workaround No

I was right, setting true to the third parameter of the scanElements makes invisible elements not participating in the collision detection. More research on how scanElements() works is needed.

Priority P3 - Low P0 - Critical

With rests there is a workaround: just move them into the staff. For notes however that would change their pitch too, unless you just change their vertical offset and maybe shorten the stem

Not even disabling autoplace for that element helps getting it excluded from skyline

So, it can be relatively easily done so that invisible elements are not included to segments' shape but then it seems that invisible elements still should participate in horizontal placement in some cases (see this message). Zero-height shapes hack makes invisible elements impossible to select. Moreover it is not clear how to treat invisibility for notes given that they can require ledger lines that are managed by chord which cannot be directly made invisible and can have multiple notes. So I am not sure that correct resolving this issue wouldn't require relatively large code changes.

As a workaround for invisible notes I can propose an option with invisible staves: they do participate in playback but not in any kind of placement. That is probably not very convenient but still working way to work around this.