Skip to content

Commit

Permalink
Add clefs to parts & linked staves when copying
Browse files Browse the repository at this point in the history
Backport of musescore#24505, commit 1
  • Loading branch information
miiizen authored and Jojo-Schmitz committed Sep 16, 2024
1 parent 2b5893e commit 7da7001
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions libmscore/edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3153,29 +3153,29 @@ void Score::insertMeasure(ElementType type, MeasureBase* measure, bool createEmp
TimeSig* nts = new TimeSig(*ts);
Segment* s = m->undoGetSegmentR(SegmentType::TimeSig, Fraction(0,1));
nts->setParent(s);
undoAddElement(nts);
undo(new AddElement(nts));
}
for (KeySig* ks : ksl) {
KeySig* nks = new KeySig(*ks);
Segment* s = m->undoGetSegmentR(SegmentType::KeySig, Fraction(0,1));
if (headerKeySig || m->tick().isZero())
s->setHeader(true);
nks->setParent(s);
undoAddElement(nks);
undo(new AddElement(nks));
}
for (Clef* clef : cl) {
Clef* nClef = new Clef(*clef);
Segment* s = m->undoGetSegmentR(SegmentType::HeaderClef, Fraction(0,1));
s->setHeader(true);
nClef->setParent(s);
undoAddElement(nClef);
undo(new AddElement(nClef));
}
Measure* pm = m->prevMeasure();
for (Clef* clef : pcl) {
Clef* nClef = new Clef(*clef);
Segment* s = pm->undoGetSegment(SegmentType::Clef, tick);
nClef->setParent(s);
undoAddElement(nClef);
undo(new AddElement(nClef));
}
}
else {
Expand Down Expand Up @@ -4581,7 +4581,8 @@ void Score::undoAddElement(Element* element)
&& et != ElementType::FRET_DIAGRAM
&& et != ElementType::FERMATA
&& et != ElementType::HARMONY
&& et != ElementType::FIGURED_BASS)
&& et != ElementType::FIGURED_BASS
&& et != ElementType::CLEF)
) {
undo(new AddElement(element));
return;
Expand Down Expand Up @@ -4758,11 +4759,12 @@ void Score::undoAddElement(Element* element)
|| element->isFretDiagram()
|| element->isFermata()
|| element->isHarmony()
|| element->isFiguredBass()) {
|| element->isFiguredBass()
|| element->isClef()) {
Segment* segment = element->parent()->isFretDiagram() ? toSegment(element->parent()->parent()) : toSegment(element->parent());
Fraction tick = segment->tick();
Measure* m = score->tick2measure(tick);
if ((segment->segmentType() == SegmentType::EndBarLine) && (m->tick() == tick))
if ((segment->segmentType() & (SegmentType::EndBarLine | SegmentType::Clef)) && (m->tick() == tick))
m = m->prevMeasure();
Segment* seg = m->undoGetSegment(segment->segmentType(), tick);
ne->setTrack(ntrack);
Expand Down

0 comments on commit 7da7001

Please sign in to comment.