From c3a8c2b6508c04a77dd7cf3ee5b8036441dea974 Mon Sep 17 00:00:00 2001 From: James Mizen Date: Mon, 12 Aug 2024 15:18:46 +0100 Subject: [PATCH] Clear old system before laying out current system Systems are cleared when they are fetched. If a measure used to be on a later system and has moved to be on the current system, the later system must also be cleared before the current system's elements are laid out. This frees spanner segments which will be reused. --- src/engraving/rendering/dev/systemlayout.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/engraving/rendering/dev/systemlayout.cpp b/src/engraving/rendering/dev/systemlayout.cpp index 19f39bb2bf351..28e153a481bce 100644 --- a/src/engraving/rendering/dev/systemlayout.cpp +++ b/src/engraving/rendering/dev/systemlayout.cpp @@ -284,6 +284,10 @@ System* SystemLayout::collectSystem(LayoutContext& ctx) break; } + if (oldSystem && system != oldSystem && muse::contains(ctx.state().systemList(), oldSystem)) { + oldSystem->clear(); + } + if (ctx.state().prevMeasure() && ctx.state().prevMeasure()->isMeasure() && ctx.state().prevMeasure()->system() == system) { // // now we know that the previous measure is not the last