glissando don't work with cross staff notation

• Nov 7, 2014 - 14:55
Type
Functional
Severity
3
Status
active
Project

in a piano staff create some notes in treble clef
connect 2 notes with a glissando
before.png
move the 2nd nore into to the bass clef (Ctrl-Shift-Down)

expected result: the gliss still connects the 2 notes

actual result: the gliss now semms to start somewhere below the bass note, looks as to a spot on the same line/space in the bass clef as the starting note on the treble clef.
after.png
actually it moves with that
after2.png
fd82ab6679, Windows 7 (Enterprise, 64bit)


Comments

BTW, I take it you probably weren't really trying to create a gliss, but were hoping for a generic line to indicate the motion of the voice? I was thinking at first this was pretty minor until I realized that would be a common use case.

That was indeed my use case, as a gliss this hadn't made much sense, other than to serve as an example ;-)

So now you're up to earn the 'oldest bug fixed recently' award, I guess??

Severity

It turns out this would require a much deeper change than I suspected. The problem is not with any calculations performed within Glissando::layout() - they are actually correct (except for the cross-system issue). The problem is that gliss layout is performed before we have calculated the positions of staves within a system, so there does not appear to be any way to get info about the positions of elements on other staves relative to this staff.

So I don't think I can fix this right now, except with a hack that just sort of draws a line in the general direction of the other staff. Which could of course be combined with my partial fix for cross-system glissandi.

It's possible that if/when things are re-structured to make true cross-system glissandi possible, this will automatically fix the cross-staff glissandi as well.

I think we need to make a call on this pretty soon, though. I'll ping Miwarre, but even if he is essentially done with the code, it is possible it will be decided it is too invasive a change for 2.0.