composed Modifier changes (#9631)

Referring at the examples and other internal usages, the
resulting stateful Modifier should be separated from
all the previous Modifier chain.
This commit is contained in:
Ivan Iskandar 2023-06-24 04:54:01 +07:00 committed by GitHub
parent 6808fbbb21
commit 25b0458930
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 22 deletions

View file

@ -245,7 +245,7 @@ private fun Modifier.commonClickable(
) = composed { ) = composed {
val haptic = LocalHapticFeedback.current val haptic = LocalHapticFeedback.current
this.combinedClickable( Modifier.combinedClickable(
enabled = enabled, enabled = enabled,
onLongClick = { onLongClick = {
onLongClick() onLongClick()

View file

@ -113,7 +113,7 @@ internal fun Modifier.highlightBackground(highlighted: Boolean): Modifier = comp
tween(200) tween(200)
}, },
) )
then(Modifier.background(color = highlight)) Modifier.background(color = highlight)
} }
internal val TrailingWidgetBuffer = 16.dp internal val TrailingWidgetBuffer = 16.dp

View file

@ -29,7 +29,9 @@ import tachiyomi.presentation.core.components.Pill
private fun Modifier.tabIndicatorOffset( private fun Modifier.tabIndicatorOffset(
currentTabPosition: TabPosition, currentTabPosition: TabPosition,
currentPageOffsetFraction: Float, currentPageOffsetFraction: Float,
) = composed { ) = fillMaxWidth()
.wrapContentSize(Alignment.BottomStart)
.composed {
val currentTabWidth by animateDpAsState( val currentTabWidth by animateDpAsState(
targetValue = currentTabPosition.width, targetValue = currentTabPosition.width,
animationSpec = spring(stiffness = Spring.StiffnessMediumLow), animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
@ -38,11 +40,10 @@ private fun Modifier.tabIndicatorOffset(
targetValue = currentTabPosition.left + (currentTabWidth * currentPageOffsetFraction), targetValue = currentTabPosition.left + (currentTabWidth * currentPageOffsetFraction),
animationSpec = spring(stiffness = Spring.StiffnessMediumLow), animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
) )
fillMaxWidth() Modifier
.wrapContentSize(Alignment.BottomStart)
.offset { IntOffset(x = offset.roundToPx(), y = 0) } .offset { IntOffset(x = offset.roundToPx(), y = 0) }
.width(currentTabWidth) .width(currentTabWidth)
} }
@Composable @Composable
fun TabIndicator( fun TabIndicator(

View file

@ -25,13 +25,13 @@ import androidx.compose.ui.input.key.onPreviewKeyEvent
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import tachiyomi.presentation.core.components.material.SecondaryItemAlpha import tachiyomi.presentation.core.components.material.SecondaryItemAlpha
fun Modifier.selectedBackground(isSelected: Boolean): Modifier = composed { fun Modifier.selectedBackground(isSelected: Boolean): Modifier = if (isSelected) {
if (isSelected) { composed {
val alpha = if (isSystemInDarkTheme()) 0.16f else 0.22f val alpha = if (isSystemInDarkTheme()) 0.16f else 0.22f
background(MaterialTheme.colorScheme.secondary.copy(alpha = alpha)) Modifier.background(MaterialTheme.colorScheme.secondary.copy(alpha = alpha))
} else {
this
} }
} else {
this
} }
fun Modifier.secondaryItemAlpha(): Modifier = this.alpha(SecondaryItemAlpha) fun Modifier.secondaryItemAlpha(): Modifier = this.alpha(SecondaryItemAlpha)
@ -40,7 +40,7 @@ fun Modifier.clickableNoIndication(
onLongClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null,
onClick: () -> Unit, onClick: () -> Unit,
): Modifier = composed { ): Modifier = composed {
this.combinedClickable( Modifier.combinedClickable(
interactionSource = remember { MutableInteractionSource() }, interactionSource = remember { MutableInteractionSource() },
indication = null, indication = null,
onLongClick = onLongClick, onLongClick = onLongClick,