From 74da07bd1f751ce901f0661f520a37031072d454 Mon Sep 17 00:00:00 2001 From: Michele Spagnolo Date: Fri, 18 Aug 2023 18:06:24 +0200 Subject: [PATCH] Don't clone excluded elements to new parts --- src/engraving/libmscore/excerpt.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/engraving/libmscore/excerpt.cpp b/src/engraving/libmscore/excerpt.cpp index 73cf353119c90..913d6dcdb5480 100644 --- a/src/engraving/libmscore/excerpt.cpp +++ b/src/engraving/libmscore/excerpt.cpp @@ -765,7 +765,7 @@ static MeasureBase* cloneMeasure(MeasureBase* mb, Score* score, const Score* osc for (Segment* oseg = m->first(); oseg; oseg = oseg->next()) { Segment* ns = nullptr; //create segment later, on demand for (EngravingItem* e : oseg->annotations()) { - if (e->generated()) { + if (e->generated() || e->excludeFromOtherParts()) { continue; } if ((e->track() == srcTrack && strack != mu::nidx && !e->systemFlag()) @@ -844,7 +844,7 @@ static MeasureBase* cloneMeasure(MeasureBase* mb, Score* score, const Score* osc } } - if (oe && !oe->generated()) { + if (oe && !oe->generated() && !oe->excludeFromOtherParts()) { EngravingItem* ne; ne = oe->linkedClone(); ne->setTrack(track); @@ -1061,6 +1061,10 @@ void Excerpt::cloneStaves(Score* sourceScore, Score* dstScore, const std::vector for (auto i : sourceScore->spanner()) { Spanner* s = i.second; + if (s->excludeFromOtherParts()) { + continue; + } + track_idx_t dstTrack = mu::nidx; track_idx_t dstTrack2 = mu::nidx; @@ -1432,7 +1436,7 @@ void Excerpt::cloneStaff2(Staff* srcStaff, Staff* dstStaff, const Fraction& star } for (EngravingItem* e : oseg->annotations()) { - if (e->generated()) { + if (e->generated() || e->excludeFromOtherParts()) { continue; } bool systemObject = e->systemFlag() && e->track() == 0; @@ -1450,7 +1454,7 @@ void Excerpt::cloneStaff2(Staff* srcStaff, Staff* dstStaff, const Fraction& star } EngravingItem* oe = oseg->element(srcTrack); - if (oe == 0 || oe->generated()) { + if (oe == 0 || oe->generated() || oe->excludeFromOtherParts()) { continue; } @@ -1513,7 +1517,7 @@ void Excerpt::cloneStaff2(Staff* srcStaff, Staff* dstStaff, const Fraction& star for (auto i : oscore->spanner()) { Spanner* s = i.second; - if (!(s->tick() >= startTick && s->tick2() < endTick)) { + if (!(s->tick() >= startTick && s->tick2() < endTick) || s->excludeFromOtherParts()) { continue; }