Skip to content

Support Display::Contents #533

Open
@nicoburns

Description

@nicoburns

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 the Display enum
  • Alter the children iterator of the Taffy tree implementation to check each Node's Display property, an recurse into children that are set to Display::Contents, returning those grandchildren (and great-grandchildren, etc in the case that any of the grandchild nodes are themselves set to Display::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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions