diff --git a/libmscore/chordrest.cpp b/libmscore/chordrest.cpp index b465310527..73f5ba529f 100644 --- a/libmscore/chordrest.cpp +++ b/libmscore/chordrest.cpp @@ -83,7 +83,7 @@ ChordRest::ChordRest(const ChordRest& cr) _tabDur = 0; // tab sur. symb. depends upon context: can't be // simply copied from another CR - foreach(Articulation* a, cr._articulations) { // make deep copy + for (const Articulation* a : cr._articulations) { // make deep copy Articulation* na = new Articulation(*a); na->setParent(this); na->setTrack(track()); diff --git a/libmscore/excerpt.cpp b/libmscore/excerpt.cpp index 7517ad83cb..9a9b1547ac 100644 --- a/libmscore/excerpt.cpp +++ b/libmscore/excerpt.cpp @@ -36,6 +36,7 @@ #include "tiemap.h" #include "layoutbreak.h" #include "harmony.h" +#include "beam.h" namespace Ms { @@ -212,8 +213,8 @@ void cloneStaves(Score* oscore, Score* score, const QList& map) } ++st; } - if (((srcTrack % VOICES) == 0) && track != -1) { - } +// if (((srcTrack % VOICES) == 0) && track != -1) { +// } for (Segment* oseg = m->first(); oseg; oseg = oseg->next()) { Segment* ns = nm->getSegment(oseg->segmentType(), oseg->tick()); @@ -256,6 +257,16 @@ void cloneStaves(Score* oscore, Score* score, const QList& map) if (oe->isChordRest()) { ChordRest* ocr = static_cast(oe); ChordRest* ncr = static_cast(ne); + + if (ocr->beam() && !ocr->beam()->isEmpty() && ocr->beam()->elements().front() == ocr) { + Beam* nb = ocr->beam()->clone(); + nb->clear(); + nb->setTrack(track); + nb->setScore(score); + nb->add(ncr); + ncr->setBeam(nb); + } + Tuplet* ot = ocr->tuplet(); if (ot) { Tuplet* nt = tupletMap.findNew(ot); @@ -273,6 +284,7 @@ void cloneStaves(Score* oscore, Score* score, const QList& map) if (oe->type() == Element::CHORD) { Chord* och = static_cast(ocr); Chord* nch = static_cast(ncr); + int n = och->notes().size(); for (int i = 0; i < n; ++i) { Note* on = och->notes().at(i);