Support Compose 1.11 and deterministic subcomposition ordering - #194
Closed
zirman wants to merge 0 commit into
Closed
Support Compose 1.11 and deterministic subcomposition ordering#194zirman wants to merge 0 commit into
zirman wants to merge 0 commit into
Conversation
zach-klippenstein
left a comment
Collaborator
There was a problem hiding this comment.
Thanks for this! Please write tests for subcomposition ordering, if at all possible.
Comment on lines
+38
to
+46
| data class LayoutNodeInfo( | ||
| val name: String, | ||
| val callChain: List<CallGroupInfo>, | ||
| val bounds: IntRect, | ||
| val modifiers: List<Modifier>, | ||
| val children: Sequence<ComposeLayoutInfo>, | ||
| val semanticsNodes: List<SemanticsNode>, | ||
| val name: String, | ||
| val callChain: List<CallGroupInfo>, | ||
| val bounds: IntRect, | ||
| val modifiers: List<Modifier>, | ||
| val children: Sequence<ComposeLayoutInfo>, | ||
| val semanticsNodes: List<SemanticsNode>, | ||
| // Node reference used to sort Subcompose Layouts deterministically across runs | ||
| val layoutNode: Any? = null, |
Collaborator
There was a problem hiding this comment.
Suggested change
| data class LayoutNodeInfo( | |
| val name: String, | |
| val callChain: List<CallGroupInfo>, | |
| val bounds: IntRect, | |
| val modifiers: List<Modifier>, | |
| val children: Sequence<ComposeLayoutInfo>, | |
| val semanticsNodes: List<SemanticsNode>, | |
| val name: String, | |
| val callChain: List<CallGroupInfo>, | |
| val bounds: IntRect, | |
| val modifiers: List<Modifier>, | |
| val children: Sequence<ComposeLayoutInfo>, | |
| val semanticsNodes: List<SemanticsNode>, | |
| // Node reference used to sort Subcompose Layouts deterministically across runs | |
| val layoutNode: Any? = null, | |
| /** | |
| * @param layoutNode Node reference used to sort Subcompose Layouts deterministically across runs. | |
| */ | |
| data class LayoutNodeInfo( | |
| val name: String, | |
| val callChain: List<CallGroupInfo>, | |
| val bounds: IntRect, | |
| val modifiers: List<Modifier>, | |
| val children: Sequence<ComposeLayoutInfo>, | |
| val semanticsNodes: List<SemanticsNode>, | |
| val layoutNode: Any? = null, |
Contributor
Author
I added a test but it's doesn't prove determinism. We have a large proprietary code base that we snapshot which is my real world test. So far these changes have generated the same order over multiple runs on different environments. I'm going to open a new PR since I broke this one from a force push when trying to sign commits. Thanks. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
CompositionContexts.ktto supportGapComposer,LinkComposer, and theRememberObserverHolderwrapper introduced in newer Compose versions.LayoutNode.getChildren.v2Compose test rules.ProvideCompositionLocals.