diff --git a/src/engraving/dom/utils.cpp b/src/engraving/dom/utils.cpp index d9a7f4248c2a5..ccafbf15f4309 100644 --- a/src/engraving/dom/utils.cpp +++ b/src/engraving/dom/utils.cpp @@ -1187,13 +1187,14 @@ Fraction actualTicks(Fraction duration, Tuplet* tuplet, Fraction timeStretch) return f; } -double yStaffDifference(const System* system1, staff_idx_t staffIdx1, const System* system2, staff_idx_t staffIdx2) +double yStaffDifference(const System* system1, const System* system2, staff_idx_t staffIdx) { if (!system1 || !system2) { return 0.0; } - const SysStaff* staff1 = system1->staff(staffIdx1); - const SysStaff* staff2 = system2->staff(staffIdx2); + + const SysStaff* staff1 = system1->staff(staffIdx); + const SysStaff* staff2 = system2->staff(staffIdx); if (!staff1 || !staff2) { return 0.0; } diff --git a/src/engraving/dom/utils.h b/src/engraving/dom/utils.h index f39ec16a48222..fc83d16474480 100644 --- a/src/engraving/dom/utils.h +++ b/src/engraving/dom/utils.h @@ -84,7 +84,7 @@ extern Segment* skipTuplet(Tuplet* tuplet); extern SymIdList timeSigSymIdsFromString(const String&); extern Fraction actualTicks(Fraction duration, Tuplet* tuplet, Fraction timeStretch); -extern double yStaffDifference(const System* system1, staff_idx_t staffIdx1, const System* system2, staff_idx_t staffIdx2); +extern double yStaffDifference(const System* system1, const System* system2, staff_idx_t staffIdx1); extern bool allowRemoveWhenRemovingStaves(EngravingItem* item, staff_idx_t startStaff, staff_idx_t endStaff = 0); extern bool moveDownWhenAddingStaves(EngravingItem* item, staff_idx_t startStaff, staff_idx_t endStaff = 0); diff --git a/src/engraving/rendering/score/tlayout.cpp b/src/engraving/rendering/score/tlayout.cpp index fea86729c992d..fea3e5b6ba0f7 100644 --- a/src/engraving/rendering/score/tlayout.cpp +++ b/src/engraving/rendering/score/tlayout.cpp @@ -4954,7 +4954,7 @@ void TLayout::layoutNoteAnchoredLine(SLine* item, EngravingItem::LayoutData* lda } double startY = startSeg->ldata()->pos().y(); double yTot = endSeg->ldata()->pos().y() + endSeg->ipos2().y() - startY; - yTot -= yStaffDifference(endSeg->system(), track2staff(item->track2()), startSeg->system(), track2staff(item->track())); + yTot -= yStaffDifference(endSeg->system(), startSeg->system(), track2staff(item->track2())); double ratio = muse::divide(yTot, xTot, 1.0); // interpolate y-coord of intermediate points across total width and height double xCurr = 0.0; @@ -4966,7 +4966,7 @@ void TLayout::layoutNoteAnchoredLine(SLine* item, EngravingItem::LayoutData* lda segm->rypos2() = yCurr - segm->ldata()->pos().y(); // position segm. end point at yCurr // next segment shall start where this segment stopped SpannerSegment* nextSeg = item->segmentAt(i + 1); - yCurr += yStaffDifference(nextSeg->system(), track2staff(item->track2()), segm->system(), track2staff(item->track())); + yCurr += yStaffDifference(nextSeg->system(), segm->system(), track2staff(item->track2())); segm = nextSeg; segm->rypos2() += segm->ldata()->pos().y() - yCurr; // adjust next segm. vertical length segm->mutldata()->setPosY(yCurr); // position next segm. start point at yCurr diff --git a/vtest/scores/gliss-6.mscz b/vtest/scores/gliss-6.mscz new file mode 100644 index 0000000000000..d1a7a84b96807 Binary files /dev/null and b/vtest/scores/gliss-6.mscz differ