diff --git a/src/engraving/compat/engravingcompat.cpp b/src/engraving/compat/engravingcompat.cpp index 0b58e91b1399e..9572f32eabf75 100644 --- a/src/engraving/compat/engravingcompat.cpp +++ b/src/engraving/compat/engravingcompat.cpp @@ -297,6 +297,9 @@ static void doMigrateOffset500(EngravingItem* item) return; } + // In versions <5 any adjustment to offset meant we couldn't centre items between staves + item->setProperty(Pid::CENTER_BETWEEN_STAVES, AutoOnOff::OFF); + item->setOffset(CompatUtils::getAdjustedOffset(item, item->offset())); } diff --git a/src/engraving/rendering/score/alignmentlayout.cpp b/src/engraving/rendering/score/alignmentlayout.cpp index a31b4f761d1ad..b306ed2b16837 100644 --- a/src/engraving/rendering/score/alignmentlayout.cpp +++ b/src/engraving/rendering/score/alignmentlayout.cpp @@ -193,7 +193,7 @@ void AlignmentLayout::moveItemToY(EngravingItem* item, double y, const System* s double AlignmentLayout::yOpticalCenter(const EngravingItem* item) { - double curY = item->pos().y(); + double curY = item->ldata()->pos().y(); switch (item->type()) { case ElementType::DYNAMIC: case ElementType::EXPRESSION: diff --git a/src/engraving/rendering/score/dynamicslayout.cpp b/src/engraving/rendering/score/dynamicslayout.cpp index 62c4ac5f4f23d..a9ef4f1553062 100644 --- a/src/engraving/rendering/score/dynamicslayout.cpp +++ b/src/engraving/rendering/score/dynamicslayout.cpp @@ -152,7 +152,7 @@ void DynamicsLayout::layoutDynamicToEndOfPrevious(const Dynamic* item, TextBase: void DynamicsLayout::manageBarlineCollisions(const Dynamic* item, TextBase::LayoutData* ldata) { - if (item->score()->nstaves() <= 1 || item->anchorToEndOfPrevious() || !item->offset().isNull()) { + if (item->score()->nstaves() <= 1 || item->anchorToEndOfPrevious()) { return; } diff --git a/src/engraving/rendering/score/systemlayout.cpp b/src/engraving/rendering/score/systemlayout.cpp index 5b0fabc38586a..7f922d66e9885 100644 --- a/src/engraving/rendering/score/systemlayout.cpp +++ b/src/engraving/rendering/score/systemlayout.cpp @@ -1845,9 +1845,6 @@ void SystemLayout::processLines(System* system, LayoutContext& ctx, const std::v } } for (SpannerSegment* ss : segments) { - if (!ss->offset().isNull()) { - continue; - } const double& staffY = ss->spanner() && ss->spanner()->placeAbove() ? yAbove[ss->staffIdx()] : yBelow[ss->staffIdx()]; if (staffY > -DBL_MAX) { ss->mutldata()->setPosY(staffY); @@ -2625,11 +2622,6 @@ void SystemLayout::centerBigTimeSigsAcrossStaves(const System* system) bool SystemLayout::elementShouldBeCenteredBetweenStaves(const EngravingItem* item, const System* system) { - if (item->offset().y() != item->propertyDefault(Pid::OFFSET).value().y()) { - // NOTE: because of current limitations of the offset system, we can't center an element that's been manually moved. - return false; - } - const Part* itemPart = item->part(); IF_ASSERT_FAILED(itemPart) { return false; @@ -2689,11 +2681,6 @@ bool SystemLayout::mmRestShouldBeCenteredBetweenStaves(const MMRest* mmRest, con bool SystemLayout::whammyBarShouldBeCenteredBetweenStaves(const WhammyBarSegment* wbar, const System* system) { - if (wbar->offset().y() != wbar->propertyDefault(Pid::OFFSET).value().y()) { - // NOTE: because of current limitations of the offset system, we can't center an element that's been manually moved. - return false; - } - staff_idx_t staffIdx = wbar->staffIdx(); Staff* thisStaff = wbar->staff(); Staff* nextStaff = wbar->score()->staff(staffIdx + 1); @@ -2754,7 +2741,7 @@ void SystemLayout::centerElementBetweenStaves(EngravingItem* element, const Syst const double minHorizontalClearance = system->style().styleAbsolute(Sid::skylineMinHorizontalClearance); Shape elementShape = element->ldata()->shape() - .translated(PointF(elementXinSystemCoord, element->y())) + .translated(PointF(elementXinSystemCoord, element->ldata()->pos().y())) .adjust(-minHorizontalClearance, 0.0, minHorizontalClearance, 0.0); elementShape.remove_if([](ShapeElement& shEl) { return shEl.ignoreForLayout(); });