Skip to content

Commit a95a74b

Browse files
author
Chris
committedAug 17, 2020
[Jetcaster] Fix new insets modifier
The resolved dimensions were being calculated incorrectly. Now moved back to similar code from LayoutSize.kt in Compose Change-Id: I864d8401e33f6a2662ba0d6f669bfecddc0dfa6c
1 parent 4fc34b9 commit a95a74b

File tree

1 file changed

+42
-37
lines changed
  • Jetcaster/app/src/main/java/com/example/jetcaster/util

1 file changed

+42
-37
lines changed
 

‎Jetcaster/app/src/main/java/com/example/jetcaster/util/Insets.kt

+42-37
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ import androidx.compose.ui.unit.LayoutDirection
4747
import androidx.compose.ui.unit.dp
4848
import androidx.compose.ui.unit.offset
4949
import androidx.core.view.ViewCompat
50-
import kotlin.math.min
5150

5251
/**
5352
* Main holder of our inset values.
@@ -382,59 +381,65 @@ private data class InsetsSizeModifier(
382381
private val heightSide: VerticalSide? = null,
383382
private val additionalHeight: Dp = 0.dp
384383
) : LayoutModifier {
385-
private fun targetConstraints(density: Density): Constraints = with(density) {
386-
val additionalWidthPx = additionalWidth.toIntPx()
387-
val additionalHeightPx = additionalHeight.toIntPx()
388-
Constraints(
389-
minWidth = additionalWidthPx + when (widthSide) {
390-
HorizontalSide.Left -> insets.left
391-
HorizontalSide.Right -> insets.right
392-
null -> 0
393-
},
394-
minHeight = additionalHeightPx + when (heightSide) {
395-
VerticalSide.Top -> insets.top
396-
VerticalSide.Bottom -> insets.bottom
397-
null -> 0
398-
},
399-
maxWidth = when (widthSide) {
400-
HorizontalSide.Left -> insets.left + additionalWidthPx
401-
HorizontalSide.Right -> insets.right + additionalWidthPx
402-
null -> Constraints.Infinity
403-
},
404-
maxHeight = when (heightSide) {
405-
VerticalSide.Top -> insets.top + additionalHeightPx
406-
VerticalSide.Bottom -> insets.bottom + additionalHeightPx
407-
null -> Constraints.Infinity
408-
}
409-
)
410-
}
384+
private val Density.targetConstraints: Constraints
385+
get() {
386+
val additionalWidthPx = additionalWidth.toIntPx()
387+
val additionalHeightPx = additionalHeight.toIntPx()
388+
return Constraints(
389+
minWidth = additionalWidthPx + when (widthSide) {
390+
HorizontalSide.Left -> insets.left
391+
HorizontalSide.Right -> insets.right
392+
null -> 0
393+
},
394+
minHeight = additionalHeightPx + when (heightSide) {
395+
VerticalSide.Top -> insets.top
396+
VerticalSide.Bottom -> insets.bottom
397+
null -> 0
398+
},
399+
maxWidth = when (widthSide) {
400+
HorizontalSide.Left -> insets.left + additionalWidthPx
401+
HorizontalSide.Right -> insets.right + additionalWidthPx
402+
null -> Constraints.Infinity
403+
},
404+
maxHeight = when (heightSide) {
405+
VerticalSide.Top -> insets.top + additionalHeightPx
406+
VerticalSide.Bottom -> insets.bottom + additionalHeightPx
407+
null -> Constraints.Infinity
408+
}
409+
)
410+
}
411411

412412
override fun MeasureScope.measure(
413413
measurable: Measurable,
414414
constraints: Constraints
415415
): MeasureScope.MeasureResult {
416-
val wrappedConstraints = targetConstraints(this).let { targetConstraints ->
416+
val wrappedConstraints = targetConstraints.let { targetConstraints ->
417417
val resolvedMinWidth = if (widthSide != null) {
418418
targetConstraints.minWidth
419419
} else {
420-
min(constraints.minWidth, targetConstraints.maxWidth)
420+
constraints.minWidth.coerceAtMost(targetConstraints.maxWidth)
421421
}
422422
val resolvedMaxWidth = if (widthSide != null) {
423423
targetConstraints.maxWidth
424424
} else {
425-
min(constraints.maxWidth, targetConstraints.minWidth)
425+
constraints.maxWidth.coerceAtLeast(targetConstraints.minWidth)
426426
}
427427
val resolvedMinHeight = if (heightSide != null) {
428428
targetConstraints.minHeight
429429
} else {
430-
min(constraints.minHeight, targetConstraints.maxHeight)
430+
constraints.minHeight.coerceAtMost(targetConstraints.maxHeight)
431431
}
432432
val resolvedMaxHeight = if (heightSide != null) {
433433
targetConstraints.maxHeight
434434
} else {
435-
min(constraints.maxHeight, targetConstraints.minHeight)
435+
constraints.maxHeight.coerceAtLeast(targetConstraints.minHeight)
436436
}
437-
Constraints(resolvedMinWidth, resolvedMaxWidth, resolvedMinHeight, resolvedMaxHeight)
437+
Constraints(
438+
resolvedMinWidth,
439+
resolvedMaxWidth,
440+
resolvedMinHeight,
441+
resolvedMaxHeight
442+
)
438443
}
439444
val placeable = measurable.measure(wrappedConstraints)
440445
return layout(placeable.width, placeable.height) {
@@ -446,31 +451,31 @@ private data class InsetsSizeModifier(
446451
measurable: IntrinsicMeasurable,
447452
height: Int
448453
) = measurable.minIntrinsicWidth(height).let {
449-
val constraints = targetConstraints(this)
454+
val constraints = targetConstraints
450455
it.coerceIn(constraints.minWidth, constraints.maxWidth)
451456
}
452457

453458
override fun IntrinsicMeasureScope.maxIntrinsicWidth(
454459
measurable: IntrinsicMeasurable,
455460
height: Int
456461
) = measurable.maxIntrinsicWidth(height).let {
457-
val constraints = targetConstraints(this)
462+
val constraints = targetConstraints
458463
it.coerceIn(constraints.minWidth, constraints.maxWidth)
459464
}
460465

461466
override fun IntrinsicMeasureScope.minIntrinsicHeight(
462467
measurable: IntrinsicMeasurable,
463468
width: Int
464469
) = measurable.minIntrinsicHeight(width).let {
465-
val constraints = targetConstraints(this)
470+
val constraints = targetConstraints
466471
it.coerceIn(constraints.minHeight, constraints.maxHeight)
467472
}
468473

469474
override fun IntrinsicMeasureScope.maxIntrinsicHeight(
470475
measurable: IntrinsicMeasurable,
471476
width: Int
472477
) = measurable.maxIntrinsicHeight(width).let {
473-
val constraints = targetConstraints(this)
478+
val constraints = targetConstraints
474479
it.coerceIn(constraints.minHeight, constraints.maxHeight)
475480
}
476481
}

0 commit comments

Comments
 (0)