Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9051dd0c authored by Anvesh Renikindi's avatar Anvesh Renikindi Committed by Android (Google) Code Review
Browse files

Merge "[STL] Address API council feedback on ApproachLayoutModifierNode" into main

parents 77c8c18e 2b702c3a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -217,18 +217,18 @@ internal class ElementNode(
        maybePruneMaps(layoutImpl, prevElement, prevSceneState)
    }

    override fun isMeasurementApproachComplete(lookaheadSize: IntSize): Boolean {
    override fun isMeasurementApproachInProgress(lookaheadSize: IntSize): Boolean {
        // TODO(b/324191441): Investigate whether making this check more complex (checking if this
        // element is shared or transformed) would lead to better performance.
        return layoutImpl.state.currentTransitions.isEmpty()
        return layoutImpl.state.isTransitioning()
    }

    override fun Placeable.PlacementScope.isPlacementApproachComplete(
    override fun Placeable.PlacementScope.isPlacementApproachInProgress(
        lookaheadCoordinates: LayoutCoordinates
    ): Boolean {
        // TODO(b/324191441): Investigate whether making this check more complex (checking if this
        // element is shared or transformed) would lead to better performance.
        return layoutImpl.state.currentTransitions.isEmpty()
        return layoutImpl.state.isTransitioning()
    }

    @ExperimentalComposeUiApi
+4 −2
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.intermediateLayout
import androidx.compose.ui.layout.approachLayout
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.zIndex
@@ -74,7 +74,9 @@ internal class Scene(
        Box(
            modifier
                .zIndex(zIndex)
                .intermediateLayout { measurable, constraints ->
                .approachLayout(
                    isMeasurementApproachInProgress = { scope.layoutState.isTransitioning() }
                ) { measurable, constraints ->
                    targetSize = lookaheadSize
                    val placeable = measurable.measure(constraints)
                    layout(placeable.width, placeable.height) { placeable.place(0, 0) }
+2 −2
Original line number Diff line number Diff line
@@ -251,8 +251,8 @@ private data class LayoutElement(private val layoutImpl: SceneTransitionLayoutIm

private class LayoutNode(var layoutImpl: SceneTransitionLayoutImpl) :
    Modifier.Node(), ApproachLayoutModifierNode {
    override fun isMeasurementApproachComplete(lookaheadSize: IntSize): Boolean {
        return layoutImpl.state.currentTransition == null
    override fun isMeasurementApproachInProgress(lookaheadSize: IntSize): Boolean {
        return layoutImpl.state.isTransitioning()
    }

    @ExperimentalComposeUiApi
+5 −3
Original line number Diff line number Diff line
@@ -18,15 +18,17 @@ package com.android.compose.animation.scene.modifiers

import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.intermediateLayout
import androidx.compose.ui.layout.approachLayout
import androidx.compose.ui.unit.Constraints
import com.android.compose.animation.scene.SceneTransitionLayoutState

@OptIn(ExperimentalComposeUiApi::class)
internal fun Modifier.noResizeDuringTransitions(layoutState: SceneTransitionLayoutState): Modifier {
    return intermediateLayout { measurable, constraints ->
    return approachLayout(isMeasurementApproachInProgress = { layoutState.isTransitioning() }) {
        measurable,
        constraints ->
        if (layoutState.currentTransition == null) {
            return@intermediateLayout measurable.measure(constraints).run {
            return@approachLayout measurable.measure(constraints).run {
                layout(width, height) { place(0, 0) }
            }
        }
+5 −3
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.layout.intermediateLayout
import androidx.compose.ui.layout.approachLayout
import androidx.compose.ui.platform.LocalViewConfiguration
import androidx.compose.ui.test.assertIsNotDisplayed
import androidx.compose.ui.test.assertPositionInRootIsEqualTo
@@ -91,7 +91,9 @@ class ElementTest {
            modifier
                .offset(offset)
                .element(key)
                .intermediateLayout { measurable, constraints ->
                .approachLayout(
                    isMeasurementApproachInProgress = { layoutState.isTransitioning() }
                ) { measurable, constraints ->
                    onLayout()
                    val placement = measurable.measure(constraints)
                    layout(placement.width, placement.height) {
@@ -525,7 +527,7 @@ class ElementTest {
                    // page should be composed.
                    HorizontalPager(
                        pagerState,
                        outOfBoundsPageCount = 0,
                        beyondViewportPageCount = 0,
                    ) { page ->
                        when (page) {
                            0 -> Box(Modifier.element(TestElements.Foo).fillMaxSize())