fix: fix Visual Editor nested flow flickering issue by improving layout cache management #2176
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.
Description
#2175
Problem:
When deleting / adding nodes under nested flow (such as IfCondition / SwitchCondition), visual editor will have flickering issue.
Root cause:
When user deleting / inserting a leaf node, parent nodes' sizes will still be loaded from layout cache instead of recalculating the size. It makes the layouter measure the size of parent nodes incorrectly, then deletion/insertion of any nested node will cause flickering issue.
Solution:
This PR fixes #2175 by making some improvements on layout cache management. The solution can be described as the picture below.
For example, when user inserts/deletes new action to
triggers[0].actions[0].elseActions[1]
, the cache oftriggers[0]
andtriggers[0].actions[0]
will be cleared, then Visual Editor layouter can remeasure their sizes to make sure the layout is updated at first render.Task Item
fixes #2175
Screenshots
More context
Layout Cache Problem in Visual Editor.pdf