Description
What problem does this solve or what need does it fill?
Display::Contents
is useful when you want to toggle between layouts which require different tree structures without actually altering the tree structure.
Requested in bevyengine/bevy#9731
What solution would you like?
- Add a
Display::Contents
variant to theDisplay
enum - Alter the children iterator of the
Taffy
tree implementation to check each Node'sDisplay
property, an recurse into children that are set toDisplay::Contents
, returning those grandchildren (and great-grandchildren, etc in the case that any of the grandchild nodes are themselves set toDisplay::Contents
instead of the child itself. - Process the
Display::Contents
child itself by setting it to a zero layout. - I believe that this can be implemented entirely in the tree/storage layer (and the "dispatch" function that switches between algorithms) and the layout algorithm's themselves should not need any changes.
What alternative(s) have you considered?
Don't support Display::Contents
and require users of Taffy to alter their tree structure if they want to achieve a similar effect.
Additional context
As the implementation is in the tree/storage layer, users of Taffy implementing custom tree/storage layers will have to implement this themselves. Implementing Display::Contents
also requires the tree/storage layer to be able to access non-direct child nodes, so custom tree/storage that can only access direct children may not be to implement this.
Metadata
Metadata
Assignees
Labels
No labels