diff --git a/src/engraving/rendering/score/measurelayout.cpp b/src/engraving/rendering/score/measurelayout.cpp index c38414cfb7be7..c1707098839ea 100644 --- a/src/engraving/rendering/score/measurelayout.cpp +++ b/src/engraving/rendering/score/measurelayout.cpp @@ -2427,13 +2427,25 @@ void MeasureLayout::addRepeatCourtesies(Measure* m, LayoutContext& ctx) return; } + bool hasCourtesies = false; for (Measure* repeatStartMeasure : measures) { - if (repeatStartMeasure == m->nextMeasure()) { + // Follow section break courtesy property + const Measure* prevMeasure = repeatStartMeasure->prevMeasure(); + const LayoutBreak* sectionBreak = prevMeasure ? prevMeasure->sectionBreakElement() : nullptr; + const bool sectionBreakHideCourtesies = sectionBreak && !sectionBreak->showCourtesy(); + + if (repeatStartMeasure == m->nextMeasure() || sectionBreakHideCourtesies) { continue; } setCourtesyClef(m, repeatStartMeasure->tick(), m->endTick(), SegmentType::ClefRepeatAnnounce, ctx); setCourtesyKeySig(m, repeatStartMeasure->tick(), m->endTick(), SegmentType::KeySigRepeatAnnounce, ctx); setCourtesyTimeSig(m, repeatStartMeasure->tick(), m->endTick(), SegmentType::TimeSigRepeatAnnounce, ctx); + + hasCourtesies = true; + } + + if (!hasCourtesies) { + removeRepeatCourtesies(m); } } diff --git a/vtest/scores/courtesy-jump-section-1.mscz b/vtest/scores/courtesy-jump-section-1.mscz new file mode 100644 index 0000000000000..f0f42671f2269 Binary files /dev/null and b/vtest/scores/courtesy-jump-section-1.mscz differ diff --git a/vtest/scores/courtesy-jump-section-2.mscz b/vtest/scores/courtesy-jump-section-2.mscz new file mode 100644 index 0000000000000..46cbcf35794e8 Binary files /dev/null and b/vtest/scores/courtesy-jump-section-2.mscz differ