OPTIMIZATION: Remove unnecessary calls to triggerLayoutAll #20141
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves: #20003
The job of
triggerLayout
is to let the Score know that something has changed at thistick
. That is done by callingScore::setLayout
, which collects the changes into a range defined by astartTick
andendTick
. That is the region of the score for which the layout will be recomputed at the next round.triggerLayoutAll
signals that the whole score has changed, and therefore will cause the entire score to be recomputed. I suspect it mostly exist as a legacy hack, because in almost NO case does it make sense to layout the entire score after editing something. There can be situations where editing an item should cause the re-computation of something before and/or after it (for instance, putting a layout break on a measure should also trigger the layout of the following one), but those situations should be handled by simply overridingtriggerLayout
wherever necessary.I have left
triggerLayoutAll
only in a few selected places now:This needs to be carefully tested. A lot of editing operations should feel quicker on big scores now. The important thing to look out for is that the score always updates correctly after all editing operations @oktophonie @DmitryArefiev.