Skip to content

Commit 89df41e

Browse files
authored
Merge pull request #30145 from mike-spa/fixInvisibleClefBug
Ensure header clef and key sig segment are always marked as header
2 parents 20b0f3f + f6bf768 commit 89df41e

File tree

4 files changed

+200
-672
lines changed

4 files changed

+200
-672
lines changed

src/engraving/dom/excerpt.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1514,10 +1514,6 @@ void Excerpt::cloneStaff2(Staff* srcStaff, Staff* dstStaff, const Fraction& star
15141514
TupletMap tupletMap; // tuplets cannot cross measure boundaries
15151515
track_idx_t dstTrack = map.at(srcTrack);
15161516
for (Segment* oseg = m->first(); oseg; oseg = oseg->next()) {
1517-
if (oseg->header()) {
1518-
// Generated at layout time, should not be cloned
1519-
continue;
1520-
}
15211517
Segment* ns = nm->getSegment(oseg->segmentType(), oseg->tick());
15221518
EngravingItem* oef = oseg->element(trackZeroVoice(srcTrack));
15231519
if (oef && !oef->generated() && (oef->isTimeSig() || oef->isKeySig())) {

src/engraving/rendering/score/measurelayout.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2532,9 +2532,9 @@ Segment* MeasureLayout::addHeaderClef(Measure* m, bool isFirstClef, const Staff*
25322532
if (staff->staffTypeForElement(m)->genClef() && (isFirstClef || !hideClef)) {
25332533
if (!cSegment) {
25342534
cSegment = Factory::createSegment(m, SegmentType::HeaderClef, Fraction(0, 1));
2535-
cSegment->setHeader(true);
25362535
m->add(cSegment);
25372536
}
2537+
cSegment->setHeader(true);
25382538
if (!clef) {
25392539
//
25402540
// create missing clef
@@ -2602,9 +2602,9 @@ Segment* MeasureLayout::addHeaderKeySig(Measure* m, bool isFirstKeysig, const St
26022602
if ((isFirstKeysig || ctx.conf().styleB(Sid::genKeysig)) && isPitchedStaff) {
26032603
if (!kSegment) {
26042604
kSegment = Factory::createSegment(m, SegmentType::KeySig, Fraction(0, 1));
2605-
kSegment->setHeader(true);
26062605
m->add(kSegment);
26072606
}
2607+
kSegment->setHeader(true);
26082608
if (!keysig) {
26092609
//
26102610
// create missing key signature
@@ -2727,14 +2727,16 @@ void MeasureLayout::removeSystemHeader(Measure* m)
27272727
break;
27282728
}
27292729
}
2730-
if (!keySigChangeHappensHere || seg->header()) {
2730+
if (seg->header() && !keySigChangeHappensHere) {
27312731
seg->setEnabled(false);
27322732
}
27332733
}
27342734
if (!seg->header()) {
27352735
break;
27362736
}
2737-
seg->setEnabled(false);
2737+
if (!seg->isKeySigType()) {
2738+
seg->setEnabled(false);
2739+
}
27382740
}
27392741
m->setHeader(false);
27402742
}

0 commit comments

Comments
 (0)