-
Couldn't load subscription status.
- Fork 153
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::Contentsvariant to theDisplayenum - Alter the children iterator of the
Taffytree implementation to check each Node'sDisplayproperty, 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::Contentsinstead of the child itself. - Process the
Display::Contentschild 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.