From 594a2f69872abaa304191cc0ebb37e9b5199d347 Mon Sep 17 00:00:00 2001 From: James Mizen Date: Mon, 8 Jan 2024 13:08:33 +0000 Subject: [PATCH] Update grace notes --- src/engraving/rendering/dev/measurelayout.cpp | 9 +++++++++ src/engraving/rendering/dev/tlayout.cpp | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/src/engraving/rendering/dev/measurelayout.cpp b/src/engraving/rendering/dev/measurelayout.cpp index 808354de23c93..179346d931fe2 100644 --- a/src/engraving/rendering/dev/measurelayout.cpp +++ b/src/engraving/rendering/dev/measurelayout.cpp @@ -1576,6 +1576,8 @@ void MeasureLayout::layoutCrossStaff(MeasureBase* mb, LayoutContext& ctx) return; } + bool layoutGrace = false; + for (Segment& s : m->segments()) { if (!s.enabled()) { continue; @@ -1596,6 +1598,7 @@ void MeasureLayout::layoutCrossStaff(MeasureBase* mb, LayoutContext& ctx) // Chord has changed direction, lay out again ChordLayout::layoutChords1(ctx, &s, c->vStaffIdx()); s.createShape(c->vStaffIdx()); + layoutGrace |= !c->graceNotes().empty(); } } if (!c->graceNotes().empty()) { @@ -1608,6 +1611,12 @@ void MeasureLayout::layoutCrossStaff(MeasureBase* mb, LayoutContext& ctx) } } } + if (layoutGrace) { + ChordLayout::updateGraceNotes(m, ctx); + for (Segment& s : m->segments()) { + ChordLayout::repositionGraceNotesAfter(&s, ctx.dom().ntracks()); + } + } } void MeasureLayout::barLinesSetSpan(Segment* seg, LayoutContext& ctx) diff --git a/src/engraving/rendering/dev/tlayout.cpp b/src/engraving/rendering/dev/tlayout.cpp index 06bfdfea11491..6bc4b181b0309 100644 --- a/src/engraving/rendering/dev/tlayout.cpp +++ b/src/engraving/rendering/dev/tlayout.cpp @@ -2896,6 +2896,12 @@ void TLayout::layoutGraceNotesGroup(GraceNotesGroup* item, LayoutContext& ctx) item->setPos(xPos, 0.0); + for (Chord* gn : *item) { + if (gn->beam() && gn->beam()->elements().front() == gn) { + TLayout::layoutBeam(gn->beam(), ctx); + } + } + if (isTabStaff) { ChordLayout::layoutStem(parentChord, ctx); }