Skip to content

Commit

Permalink
Re-layout whole spanner when change made to 1 segment
Browse files Browse the repository at this point in the history
  • Loading branch information
miiizen committed Nov 24, 2023
1 parent 7cb8db1 commit 9e61bff
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/engraving/dom/score.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5587,6 +5587,19 @@ void Score::doLayoutRange(const Fraction& st, const Fraction& et)
{
TRACEFUNC;

Fraction start = st;
Fraction end = et;

auto spanners = score()->spannerMap().findOverlapping(st.ticks(), et.ticks());
for (auto interval : spanners) {
Spanner* spanner = interval.value;
if (!spanner->staff()->visible()) {
continue;
}
start = std::min(st, spanner->tick());
end = std::max(et, spanner->tick2());
}

m_engravingFont = engravingFonts()->fontByName(style().value(Sid::MusicalSymbolFont).value<String>().toStdString());
m_layoutOptions.noteHeadWidth = m_engravingFont->width(SymId::noteheadBlack, style().spatium() / SPATIUM20);

Expand All @@ -5600,7 +5613,7 @@ void Score::doLayoutRange(const Fraction& st, const Fraction& et)
this->updateVelo();
}

renderer()->layoutScore(this, st, et);
renderer()->layoutScore(this, start, end);

if (m_resetAutoplace) {
m_resetAutoplace = false;
Expand Down

0 comments on commit 9e61bff

Please sign in to comment.