Remove ParentData
Fixes: 156034691
Bug: 147516363
ParentData is no longer needed -- it is now set through
modifiers.
Test: ui-core:cC demo app
Change-Id: I07e0135060a9fb0989d6de12756950c1a34d3b03
diff --git a/ui/ui-core/api/0.1.0-dev12.txt b/ui/ui-core/api/0.1.0-dev12.txt
index 65cd94e..1259c7a 100644
--- a/ui/ui-core/api/0.1.0-dev12.txt
+++ b/ui/ui-core/api/0.1.0-dev12.txt
@@ -716,10 +716,6 @@
method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
}
- public final class ParentDataKt {
- method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
}
diff --git a/ui/ui-core/api/current.txt b/ui/ui-core/api/current.txt
index 65cd94e..1259c7a 100644
--- a/ui/ui-core/api/current.txt
+++ b/ui/ui-core/api/current.txt
@@ -716,10 +716,6 @@
method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
}
- public final class ParentDataKt {
- method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
}
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
index 312c643..4621211 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
@@ -718,10 +718,6 @@
method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
}
- public final class ParentDataKt {
- method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
}
diff --git a/ui/ui-core/api/public_plus_experimental_current.txt b/ui/ui-core/api/public_plus_experimental_current.txt
index 312c643..4621211 100644
--- a/ui/ui-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-core/api/public_plus_experimental_current.txt
@@ -718,10 +718,6 @@
method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
}
- public final class ParentDataKt {
- method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
}
diff --git a/ui/ui-core/api/restricted_0.1.0-dev12.txt b/ui/ui-core/api/restricted_0.1.0-dev12.txt
index bded631..43517c7 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev12.txt
@@ -726,10 +726,6 @@
method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
}
- public final class ParentDataKt {
- method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
}
diff --git a/ui/ui-core/api/restricted_current.txt b/ui/ui-core/api/restricted_current.txt
index bded631..43517c7 100644
--- a/ui/ui-core/api/restricted_current.txt
+++ b/ui/ui-core/api/restricted_current.txt
@@ -726,10 +726,6 @@
method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
}
- public final class ParentDataKt {
- method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
}
diff --git a/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt b/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
index 7b1e8ab..114bcfa 100644
--- a/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
+++ b/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
@@ -52,7 +52,6 @@
import androidx.ui.core.MeasureScope
import androidx.ui.core.Modifier
import androidx.ui.core.Owner
-import androidx.ui.core.ParentData
import androidx.ui.core.ParentDataModifier
import androidx.ui.core.PassThroughLayout
import androidx.ui.core.Ref
@@ -2338,30 +2337,10 @@
PassThroughLayout {
FixedSize(50.ipx, LayoutTag("1"))
}
- PassThroughLayout {
- ParentData(LayoutTag("2")) {
- FixedSize(50.ipx, LayoutTag("1"))
- }
- }
- ParentData(LayoutTag("3")) {
- PassThroughLayout {
- ParentData(LayoutTag("2")) {
- FixedSize(50.ipx, LayoutTag("1"))
- }
- }
- }
- PassThroughLayout(LayoutTag("4")) {
- ParentData(LayoutTag("2")) {
- FixedSize(50.ipx, LayoutTag("1"))
- }
- }
}) { measurables, constraints, _ ->
assertEquals("1", measurables[0].tag)
val placeable = measurables[0].measure(constraints)
assertEquals(50.ipx, placeable.width)
- assertEquals("2", measurables[1].tag)
- assertEquals("3", measurables[2].tag)
- assertEquals("4", measurables[3].tag)
latch.countDown()
layout(0.ipx, 0.ipx) {}
}
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt b/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt
index 75fd646..1071299 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt
@@ -658,37 +658,9 @@
return _layoutChildren
}
- /**
- * `true` when parentDataNode has to be rediscovered. This is when the
- * LayoutNode has been attached.
- */
- private var parentDataDirty = false
-
override val parentData: Any?
get() = layoutNodeWrapper.parentData
- /**
- * The parentData [DataNode] for this LayoutNode.
- */
- internal var parentDataNode: DataNode<*>? = null
- get() {
- if (parentDataDirty) {
- // walk up to find ParentData
- field = null
- var node = parent
- val parentLayoutNode = parentLayoutNode
- while (node != null && node !== parentLayoutNode) {
- if (node is DataNode<*> && node.key === ParentDataKey) {
- field = node
- break
- }
- node = node.parent
- }
- parentDataDirty = false
- }
- return field
- }
-
internal val innerLayoutNodeWrapper: LayoutNodeWrapper = InnerPlaceable(this)
internal var layoutNodeWrapper = innerLayoutNodeWrapper
@@ -792,7 +764,6 @@
override fun attach(owner: Owner) {
super.attach(owner)
requestRemeasure()
- parentDataDirty = true
parentLayoutNode?.layoutChildrenDirty = true
layoutNodeWrapper.attach()
onAttach?.invoke(owner)
@@ -811,7 +782,6 @@
parentLayoutNode.layoutChildrenDirty = true
parentLayoutNode.requestRemeasure()
}
- parentDataDirty = true
alignmentLinesQueryOwner = null
onDetach?.invoke(owner)
layoutNodeWrapper.detach()
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt b/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt
index 5da930c..a99f63e 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt
@@ -59,11 +59,10 @@
override val parentData: Any?
@Suppress("DEPRECATION")
get() = if (layoutNode.handlesParentData) {
- layoutNode.parentDataNode?.value
+ null
} else {
- layoutNode.parentDataNode?.value
- ?: layoutNode.layoutChildren
- .firstOrNull { it.layoutNodeWrapper.parentData != null }?.parentData
+ layoutNode.layoutChildren
+ .firstOrNull { it.parentData != null }?.parentData
}
override fun findFocusWrapperWrappingThisWrapper() =
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt b/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt
index 16b05d0..ff348cc 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt
@@ -207,8 +207,7 @@
LayoutNode(
modifier = currentComposer.materialize(modifier),
measureBlocks = measureBlocks,
- handlesParentData =
- false
+ handlesParentData = false
) {
children()
}
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt b/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt
index 5d3f681..44e2e86 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt
@@ -26,7 +26,6 @@
* ParentData provided through the parentData node will override the data provided
* through a modifier
*/
- layoutNode.parentDataNode?.value
- ?: layoutNode.measureScope.modifyParentData(wrapped.parentData)
+ layoutNode.measureScope.modifyParentData(wrapped.parentData)
}
}
\ No newline at end of file
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/ParentData.kt b/ui/ui-core/src/main/java/androidx/ui/core/ParentData.kt
deleted file mode 100644
index 1767efb..0000000
--- a/ui/ui-core/src/main/java/androidx/ui/core/ParentData.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package androidx.ui.core
-
-import androidx.compose.Composable
-
-/**
- * Provide data for the parent of a [Layout], which can then be read from the
- * corresponding [Measurable].
- *
- * A containing [Layout] sometimes needs to mark children with attributes that can later
- * be read during layout. [data] is assigned to the [Measurable.parentData] to be read.
- * Normally [ParentData] is completely controlled by the containing Layout. For example,
- * Row and Column layout models use parent data to access the flex value of their children
- * during measurement (though that is achieved using the Inflexible and Flexible modifiers,
- * rather than using this widget).
- *
- */
-@Deprecated(
- "ParentData composable is deprecated. You should either create a modifier which implements " +
- "ParentDataModifier interface, or use LayoutTag modifier if you simply need to tag " +
- "layout children to recognize them inside the measure block."
-)
-@Composable
-inline fun ParentData(data: Any, crossinline children: @Composable () -> Unit) {
- DataNode(key = ParentDataKey, value = data) {
- children()
- }
-}