fix #301555 part 1: invisible arpeggios occupy space

This commit is contained in:
Howard-C 2020-02-25 20:49:57 +08:00
parent 52f357df83
commit cda31c3382

View file

@ -1966,9 +1966,11 @@ void Chord::layoutPitched()
qreal arpeggioDistance = score()->styleP(Sid::ArpeggioNoteDistance) * mag_;
_arpeggio->layout(); // only for width() !
_arpeggio->setHeight(0.0);
lll += _arpeggio->width() + arpeggioDistance + chordX;
qreal extraX = _arpeggio->width() + arpeggioDistance + chordX;
qreal y1 = upnote->pos().y() - upnote->headHeight() * .5;
_arpeggio->setPos(-lll, y1);
_arpeggio->setPos(-(lll + extraX), y1);
if (_arpeggio->visible())
lll += extraX;
// _arpeggio->layout() called in layoutArpeggio2()
// handle the special case of _arpeggio->span() > 1
@ -1978,8 +1980,8 @@ void Chord::layoutPitched()
// allocate enough room for glissandi
if (_endsGlissando) {
if (!rtick().isZero() // if not at beginning of measure
|| graceNotesBefore.size() > 0) // or there are graces before
if (!rtick().isZero() // if not at beginning of measure
|| graceNotesBefore.size() > 0) // or there are graces before
lll += _spatium * 0.5 + minTieLength;
// special case of system-initial glissando final note is handled in Glissando::layout() itself
}