File tree Expand file tree Collapse file tree 4 files changed +19
-13
lines changed
grid/src/commonMain/kotlin/com/cheonjaeung/compose/grid Expand file tree Collapse file tree 4 files changed +19
-13
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import androidx.compose.runtime.Immutable
55import androidx.compose.runtime.Stable
66import androidx.compose.ui.Alignment
77import androidx.compose.ui.Modifier
8+ import androidx.compose.ui.platform.debugInspectorInfo
89
910/* *
1011 * A Scope for the children of [HorizontalGrid] or [VerticalGrid].
@@ -32,7 +33,11 @@ internal object GridScopeInstance : GridScope {
3233 override fun Modifier.span (span : (GridItemSpanScope .() -> Int )? ): Modifier {
3334 return this .then(
3435 HorizontalVerticalGridSpanElement (
35- span ? : HorizontalVerticalGridParentData .DefaultSpan
36+ span = span,
37+ inspectorInfo = debugInspectorInfo {
38+ name = " span"
39+ value = span
40+ }
3641 )
3742 )
3843 }
Original file line number Diff line number Diff line change @@ -118,9 +118,6 @@ private class HorizontalVerticalGridMeasureHelper(
118118 measurables[it].parentData as ? HorizontalVerticalGridParentData
119119 }
120120
121- private val HorizontalVerticalGridParentData ?.spanOrDefault: (GridItemSpanScope .() -> Int )
122- get() = this ?.span ? : HorizontalVerticalGridParentData .DefaultSpan
123-
124121 /* *
125122 * Measures children composable constraints.
126123 */
@@ -158,9 +155,14 @@ private class HorizontalVerticalGridMeasureHelper(
158155 maxCurrentLineSpan = maxSpan - spanSum,
159156 maxLineSpan = maxSpan
160157 )
161- val scopeFunction = gridParentDataArrays[measurableIndex].spanOrDefault
162- val span = scopeFunction(spanScope)
158+ val spanFunction = gridParentDataArrays[measurableIndex]?.span
159+ val span = if (spanFunction != null ) {
160+ with (spanScope) { spanFunction() }
161+ } else {
162+ 1
163+ }
163164 require(span > 0 ) { " span must be bigger than zero, $span is zero or negative" }
165+
164166 if (span > maxSpan) {
165167 measurableIndex++
166168 continue
Original file line number Diff line number Diff line change @@ -6,11 +6,10 @@ import androidx.compose.ui.Alignment
66 * A data class to contain modifier options of item at the specified position.
77 */
88internal data class HorizontalVerticalGridParentData (
9- var span : GridItemSpanScope .() -> Int = DefaultSpan ,
9+ var span : ( GridItemSpanScope .() -> Int ) ? = null ,
1010 var alignment : Alignment = DefaultAlignment
1111) {
1212 companion object {
13- internal val DefaultSpan : GridItemSpanScope .() -> Int = { 1 }
1413 internal val DefaultAlignment : Alignment = Alignment .TopStart
1514 }
1615}
Original file line number Diff line number Diff line change @@ -7,7 +7,8 @@ import androidx.compose.ui.platform.InspectorInfo
77import androidx.compose.ui.unit.Density
88
99internal class HorizontalVerticalGridSpanElement (
10- val span : GridItemSpanScope .() -> Int
10+ val span : (GridItemSpanScope .() -> Int )? ,
11+ val inspectorInfo : InspectorInfo .() -> Unit
1112) : ModifierNodeElement<HorizontalVerticalGridSpanNode>() {
1213 override fun create (): HorizontalVerticalGridSpanNode {
1314 return HorizontalVerticalGridSpanNode (span)
@@ -18,8 +19,7 @@ internal class HorizontalVerticalGridSpanElement(
1819 }
1920
2021 override fun InspectorInfo.inspectableProperties () {
21- name = " span"
22- value = span
22+ inspectorInfo()
2323 }
2424
2525 override fun equals (other : Any? ): Boolean {
@@ -35,11 +35,11 @@ internal class HorizontalVerticalGridSpanElement(
3535}
3636
3737internal class HorizontalVerticalGridSpanNode (
38- var span : GridItemSpanScope .() -> Int
38+ var span : ( GridItemSpanScope .() -> Int ) ?
3939) : Modifier.Node(), ParentDataModifierNode {
4040 override fun Density.modifyParentData (parentData : Any? ): Any {
4141 val p = parentData as ? HorizontalVerticalGridParentData ? : HorizontalVerticalGridParentData ()
42- if (p.span == HorizontalVerticalGridParentData . DefaultSpan ) {
42+ if (p.span == null ) {
4343 p.span = span
4444 }
4545 return p
You can’t perform that action at this time.
0 commit comments