From 7609a66e728f77ce61a53ceb89bb64551a416a2d Mon Sep 17 00:00:00 2001 From: Michele Spagnolo Date: Mon, 23 Dec 2024 15:07:28 +0100 Subject: [PATCH] Correct dynamic end-of-duration alignment in case of clefs and breaths --- src/engraving/rendering/score/measurelayout.cpp | 7 +++++-- src/engraving/rendering/score/tlayout.cpp | 9 ++++++--- vtest/scores/dynamics-11.mscz | Bin 0 -> 24667 bytes 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 vtest/scores/dynamics-11.mscz diff --git a/src/engraving/rendering/score/measurelayout.cpp b/src/engraving/rendering/score/measurelayout.cpp index a5443d2c0f5bc..6b9192f050637 100644 --- a/src/engraving/rendering/score/measurelayout.cpp +++ b/src/engraving/rendering/score/measurelayout.cpp @@ -2216,8 +2216,11 @@ void MeasureLayout::layoutTimeTickAnchors(Measure* m, LayoutContext& ctx) Fraction thisDuration = segment.ticks(); Fraction relativeTick = segment.rtick() - refCRSeg->rtick(); - Segment* nextCRSeg = m->findSegmentR(SegmentType::ChordRest, refCRSeg->rtick() + refCRSeg->ticks()); - double width = nextCRSeg ? nextCRSeg->x() - refCRSeg->x() : refCRSeg->width(); + Segment* nextSeg = m->findSegmentR(SegmentType::ChordRest, refCRSeg->rtick() + refCRSeg->ticks()); + if (!nextSeg) { + nextSeg = m->findSegmentR(SegmentType::BarLineType, refCRSeg->rtick() + refCRSeg->ticks()); + } + double width = nextSeg ? nextSeg->x() - refCRSeg->x() : refCRSeg->width(); double relativeX = width * (relativeTick.toDouble() / refCRSeg->ticks().toDouble()); double relativeWidth = width * (thisDuration.toDouble() / refSegDuration.toDouble()); diff --git a/src/engraving/rendering/score/tlayout.cpp b/src/engraving/rendering/score/tlayout.cpp index c60a5e6f07a75..c0d3c3e33de56 100644 --- a/src/engraving/rendering/score/tlayout.cpp +++ b/src/engraving/rendering/score/tlayout.cpp @@ -1950,11 +1950,14 @@ void TLayout::layoutDynamicToEndOfPrevious(const Dynamic* item, TextBase::Layout { Segment* curSegment = item->segment(); Segment* leftMostSegment = curSegment; + Segment* prevSeg = curSegment; while (true) { - Segment* prevSeg = leftMostSegment->prev1enabled(); - if (prevSeg && prevSeg->tick() == leftMostSegment->tick()) { + prevSeg = prevSeg->prev1enabled(); + if (!prevSeg || prevSeg->tick() != curSegment->tick()) { + break; + } + if (prevSeg->isActive() && prevSeg->hasElements(item->staffIdx())) { leftMostSegment = prevSeg; - } else { break; } } diff --git a/vtest/scores/dynamics-11.mscz b/vtest/scores/dynamics-11.mscz new file mode 100644 index 0000000000000000000000000000000000000000..39656c24038011eebb45c95ee7fbad3a680c2558 GIT binary patch literal 24667 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