Skip to content

Commit

Permalink
Calculate spanner start and end elements before cloning to part
Browse files Browse the repository at this point in the history
Backport of musescore#23657
  • Loading branch information
miiizen authored and Jojo-Schmitz committed Jul 22, 2024
1 parent d355b51 commit 4897017
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion libmscore/excerpt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -361,14 +361,14 @@ static void cloneSpanner(Spanner* s, Score* score, int dstTrack, int dstTrack2)
// don’t clone voltas for track != 0
if ((s->isVolta() || (s->isTextLine() && toTextLine(s)->systemFlag())) && s->track() != 0)
return;

Spanner* ns = toSpanner(s->linkedClone());
ns->setScore(score);
ns->setParent(0);
ns->setTrack(dstTrack);
ns->setTrack2(dstTrack2);

if (ns->isSlur()) {

// set start/end element for slur
ChordRest* cr1 = s->startCR();
ChordRest* cr2 = s->endCR();
Expand Down Expand Up @@ -402,7 +402,33 @@ static void cloneSpanner(Spanner* s, Score* score, int dstTrack, int dstTrack2)
if (!ns->endElement())
qDebug("clone Slur: no end element");
}
else if (ns->isTrill())
ns->computeStartElement();
else {
if (!ns->startElement())
ns->computeStartElement();
if (!ns->endElement())
ns->computeEndElement();
}

#if 0
if (!ns->startElement() || !ns->endElement()) {
if (Element* startElement = ns->startElement()) {
if (startElement->isChord())
toChord(startElement)->removeStartingSpanner(ns);
}
if (Element* endElement = ns->endElement()) {
if (endElement->isChord())
toChord(endElement)->removeEndingSpanner(ns);
}
qDebug() << "No start or end element, can't add spanner: " << ns->tick().toString();
delete ns;
return;
}
#endif

score->undo(new AddElement(ns));
ns->styleChanged();
}

//---------------------------------------------------------
Expand Down

0 comments on commit 4897017

Please sign in to comment.