Incorrect cached child size is used because YGNodeCanUseCachedMeasurement() does not respect min/max dimensions #1003
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Report
Issues and Steps to Reproduce
See the attached example.
Child node has height = 10, minHeight = 40%, maxHeight = 60%.
When parent is measured against height = NaN, child height is computed to be 10, which is correct.
But then parent is laid out against height = 30.
Now child height should be
max(40% * 30, min(10, 60% * 30)) = max(12, min(10, 18)) = 12
.But
YGNodeCanUseCachedMeasurement()
returnstrue
and cached height of 10 is used instead.Expected Behavior
In all the cases, final layout should have child height of 12.
Actual Behavior
In some of the scenarios incorrect cached height is used.
Link to Code
https://pastebin.com/x5e6ZL2b
Hi @nickolas-pohilets,
thanks for pointing that out. I just pushed PR for a fix.
I'm not sure if the PR will be merged, as it is a quite edge case here, which leads to increasing the binary size for each node.
In that case I suggest, adding another root node, where you set height and width directly and pass
YGUndefined
toYGNodeCalculateLayout
for width and height.Changing these values on that new root node lead to proper invalidation of the tree.