Remove overhead of using rememberUpdatedState
Test: Existing Tests
Change-Id: I9077d87634b829ab7a42febdb6d89a5f1e677ced
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
index 7d8c9f6..181db1a 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
@@ -56,7 +56,6 @@
import androidx.compose.runtime.Stable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.runtime.saveable.Saver
import androidx.compose.runtime.saveable.listSaver
import androidx.compose.runtime.saveable.rememberSaveable
@@ -1656,7 +1655,7 @@
// This will potentially animate or interpolate a transition between the container color and the
// container's scrolled color according to the app bar's scroll state.
val colorTransitionFraction = scrollBehavior?.state?.collapsedFraction ?: 0f
- val appBarContainerColor by rememberUpdatedState(colors.containerColor(colorTransitionFraction))
+ val appBarContainerColor = colors.containerColor(colorTransitionFraction)
// Wrap the given actions in a Row.
val actionsRow = @Composable {
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
index 259114e..349165e 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
@@ -44,7 +44,6 @@
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
@@ -114,8 +113,8 @@
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
content: @Composable RowScope.() -> Unit
) {
- val containerColor = colors.containerColor(enabled).value
- val contentColor = colors.contentColor(enabled).value
+ val containerColor = colors.containerColor(enabled)
+ val contentColor = colors.contentColor(enabled)
val shadowElevation = elevation?.shadowElevation(enabled, interactionSource)?.value ?: 0.dp
val tonalElevation = elevation?.tonalElevation(enabled) ?: 0.dp
Surface(
@@ -814,21 +813,27 @@
is HoverInteraction.Enter -> {
interactions.add(interaction)
}
+
is HoverInteraction.Exit -> {
interactions.remove(interaction.enter)
}
+
is FocusInteraction.Focus -> {
interactions.add(interaction)
}
+
is FocusInteraction.Unfocus -> {
interactions.remove(interaction.focus)
}
+
is PressInteraction.Press -> {
interactions.add(interaction)
}
+
is PressInteraction.Release -> {
interactions.remove(interaction.press)
}
+
is PressInteraction.Cancel -> {
interactions.remove(interaction.press)
}
@@ -923,20 +928,16 @@
*
* @param enabled whether the button is enabled
*/
- @Composable
- internal fun containerColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) containerColor else disabledContainerColor)
- }
+ internal fun containerColor(enabled: Boolean): Color =
+ if (enabled) containerColor else disabledContainerColor
/**
* Represents the content color for this button, depending on [enabled].
*
* @param enabled whether the button is enabled
*/
- @Composable
- internal fun contentColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) contentColor else disabledContentColor)
- }
+ internal fun contentColor(enabled: Boolean): Color =
+ if (enabled) contentColor else disabledContentColor
override fun equals(other: Any?): Boolean {
if (this === other) return true
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt
index bbec175..30c9d03 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Card.kt
@@ -38,7 +38,6 @@
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
@@ -84,8 +83,8 @@
Surface(
modifier = modifier,
shape = shape,
- color = colors.containerColor(enabled = true).value,
- contentColor = colors.contentColor(enabled = true).value,
+ color = colors.containerColor(enabled = true),
+ contentColor = colors.contentColor(enabled = true),
tonalElevation = elevation.tonalElevation(enabled = true),
shadowElevation = elevation.shadowElevation(enabled = true, interactionSource = null).value,
border = border,
@@ -145,8 +144,8 @@
modifier = modifier,
enabled = enabled,
shape = shape,
- color = colors.containerColor(enabled).value,
- contentColor = colors.contentColor(enabled).value,
+ color = colors.containerColor(enabled),
+ contentColor = colors.contentColor(enabled),
tonalElevation = elevation.tonalElevation(enabled),
shadowElevation = elevation.shadowElevation(enabled, interactionSource).value,
border = border,
@@ -611,30 +610,39 @@
is HoverInteraction.Enter -> {
interactions.add(interaction)
}
+
is HoverInteraction.Exit -> {
interactions.remove(interaction.enter)
}
+
is FocusInteraction.Focus -> {
interactions.add(interaction)
}
+
is FocusInteraction.Unfocus -> {
interactions.remove(interaction.focus)
}
+
is PressInteraction.Press -> {
interactions.add(interaction)
}
+
is PressInteraction.Release -> {
interactions.remove(interaction.press)
}
+
is PressInteraction.Cancel -> {
interactions.remove(interaction.press)
}
+
is DragInteraction.Start -> {
interactions.add(interaction)
}
+
is DragInteraction.Stop -> {
interactions.remove(interaction.start)
}
+
is DragInteraction.Cancel -> {
interactions.remove(interaction.start)
}
@@ -733,9 +741,8 @@
* @param enabled whether the card is enabled
*/
@Composable
- internal fun containerColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) containerColor else disabledContainerColor)
- }
+ internal fun containerColor(enabled: Boolean): Color =
+ if (enabled) containerColor else disabledContainerColor
/**
* Represents the content color for this card, depending on [enabled].
@@ -743,9 +750,8 @@
* @param enabled whether the card is enabled
*/
@Composable
- internal fun contentColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) contentColor else disabledContentColor)
- }
+ internal fun contentColor(enabled: Boolean) =
+ if (enabled) contentColor else disabledContentColor
override fun equals(other: Any?): Boolean {
if (this === other) return true
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
index 09096d6..53851db 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
@@ -122,7 +122,7 @@
enabled = enabled,
label = label,
labelTextStyle = MaterialTheme.typography.fromToken(AssistChipTokens.LabelTextFont),
- labelColor = colors.labelColor(enabled).value,
+ labelColor = colors.labelColor(enabled),
leadingIcon = leadingIcon,
trailingIcon = trailingIcon,
shape = shape,
@@ -193,7 +193,7 @@
enabled = enabled,
label = label,
labelTextStyle = MaterialTheme.typography.fromToken(AssistChipTokens.LabelTextFont),
- labelColor = colors.labelColor(enabled).value,
+ labelColor = colors.labelColor(enabled),
leadingIcon = leadingIcon,
trailingIcon = trailingIcon,
elevation = elevation,
@@ -535,7 +535,7 @@
enabled = enabled,
label = label,
labelTextStyle = MaterialTheme.typography.fromToken(SuggestionChipTokens.LabelTextFont),
- labelColor = colors.labelColor(enabled).value,
+ labelColor = colors.labelColor(enabled),
leadingIcon = icon,
trailingIcon = null,
shape = shape,
@@ -603,7 +603,7 @@
enabled = enabled,
label = label,
labelTextStyle = MaterialTheme.typography.fromToken(SuggestionChipTokens.LabelTextFont),
- labelColor = colors.labelColor(enabled).value,
+ labelColor = colors.labelColor(enabled),
leadingIcon = icon,
trailingIcon = null,
elevation = elevation,
@@ -1324,7 +1324,7 @@
modifier = modifier.semantics { role = Role.Button },
enabled = enabled,
shape = shape,
- color = colors.containerColor(enabled).value,
+ color = colors.containerColor(enabled),
tonalElevation = elevation?.tonalElevation(enabled) ?: 0.dp,
shadowElevation = elevation?.shadowElevation(enabled, interactionSource)?.value ?: 0.dp,
border = border,
@@ -1337,8 +1337,8 @@
leadingIcon = leadingIcon,
avatar = null,
trailingIcon = trailingIcon,
- leadingIconColor = colors.leadingIconContentColor(enabled).value,
- trailingIconColor = colors.trailingIconContentColor(enabled).value,
+ leadingIconColor = colors.leadingIconContentColor(enabled),
+ trailingIconColor = colors.trailingIconContentColor(enabled),
minHeight = minHeight,
paddingValues = paddingValues
)
@@ -1383,10 +1383,10 @@
labelTextStyle = labelTextStyle,
leadingIcon = leadingIcon,
avatar = avatar,
- labelColor = colors.labelColor(enabled, selected).value,
+ labelColor = colors.labelColor(enabled, selected),
trailingIcon = trailingIcon,
- leadingIconColor = colors.leadingIconContentColor(enabled, selected).value,
- trailingIconColor = colors.trailingIconContentColor(enabled, selected).value,
+ leadingIconColor = colors.leadingIconContentColor(enabled, selected),
+ trailingIconColor = colors.trailingIconContentColor(enabled, selected),
minHeight = minHeight,
paddingValues = paddingValues
)
@@ -1500,30 +1500,39 @@
is HoverInteraction.Enter -> {
interactions.add(interaction)
}
+
is HoverInteraction.Exit -> {
interactions.remove(interaction.enter)
}
+
is FocusInteraction.Focus -> {
interactions.add(interaction)
}
+
is FocusInteraction.Unfocus -> {
interactions.remove(interaction.focus)
}
+
is PressInteraction.Press -> {
interactions.add(interaction)
}
+
is PressInteraction.Release -> {
interactions.remove(interaction.press)
}
+
is PressInteraction.Cancel -> {
interactions.remove(interaction.press)
}
+
is DragInteraction.Start -> {
interactions.add(interaction)
}
+
is DragInteraction.Stop -> {
interactions.remove(interaction.start)
}
+
is DragInteraction.Cancel -> {
interactions.remove(interaction.start)
}
@@ -1657,30 +1666,39 @@
is HoverInteraction.Enter -> {
interactions.add(interaction)
}
+
is HoverInteraction.Exit -> {
interactions.remove(interaction.enter)
}
+
is FocusInteraction.Focus -> {
interactions.add(interaction)
}
+
is FocusInteraction.Unfocus -> {
interactions.remove(interaction.focus)
}
+
is PressInteraction.Press -> {
interactions.add(interaction)
}
+
is PressInteraction.Release -> {
interactions.remove(interaction.press)
}
+
is PressInteraction.Cancel -> {
interactions.remove(interaction.press)
}
+
is DragInteraction.Start -> {
interactions.add(interaction)
}
+
is DragInteraction.Stop -> {
interactions.remove(interaction.start)
}
+
is DragInteraction.Cancel -> {
interactions.remove(interaction.start)
}
@@ -1777,44 +1795,32 @@
*
* @param enabled whether the chip is enabled
*/
- @Composable
- internal fun containerColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) containerColor else disabledContainerColor)
- }
+ internal fun containerColor(enabled: Boolean): Color =
+ if (enabled) containerColor else disabledContainerColor
/**
* Represents the label color for this chip, depending on [enabled].
*
* @param enabled whether the chip is enabled
*/
- @Composable
- internal fun labelColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) labelColor else disabledLabelColor)
- }
+ internal fun labelColor(enabled: Boolean): Color =
+ if (enabled) labelColor else disabledLabelColor
/**
* Represents the leading icon's content color for this chip, depending on [enabled].
*
* @param enabled whether the chip is enabled
*/
- @Composable
- internal fun leadingIconContentColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) leadingIconContentColor else disabledLeadingIconContentColor
- )
- }
+ internal fun leadingIconContentColor(enabled: Boolean): Color =
+ if (enabled) leadingIconContentColor else disabledLeadingIconContentColor
/**
* Represents the trailing icon's content color for this chip, depending on [enabled].
*
* @param enabled whether the chip is enabled
*/
- @Composable
- internal fun trailingIconContentColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) trailingIconContentColor else disabledTrailingIconContentColor
- )
- }
+ internal fun trailingIconContentColor(enabled: Boolean): Color =
+ if (enabled) trailingIconContentColor else disabledTrailingIconContentColor
override fun equals(other: Any?): Boolean {
if (this === other) return true
@@ -1892,14 +1898,12 @@
* @param enabled whether the chip is enabled
* @param selected whether the chip is selected
*/
- @Composable
- internal fun labelColor(enabled: Boolean, selected: Boolean): State<Color> {
- val target = when {
+ internal fun labelColor(enabled: Boolean, selected: Boolean): Color {
+ return when {
!enabled -> disabledLabelColor
!selected -> labelColor
else -> selectedLabelColor
}
- return rememberUpdatedState(target)
}
/**
@@ -1908,14 +1912,12 @@
* @param enabled whether the chip is enabled
* @param selected whether the chip is selected
*/
- @Composable
- internal fun leadingIconContentColor(enabled: Boolean, selected: Boolean): State<Color> {
- val target = when {
+ internal fun leadingIconContentColor(enabled: Boolean, selected: Boolean): Color {
+ return when {
!enabled -> disabledLeadingIconColor
!selected -> leadingIconColor
else -> selectedLeadingIconColor
}
- return rememberUpdatedState(target)
}
/**
@@ -1924,14 +1926,12 @@
* @param enabled whether the chip is enabled
* @param selected whether the chip is selected
*/
- @Composable
- internal fun trailingIconContentColor(enabled: Boolean, selected: Boolean): State<Color> {
- val target = when {
+ internal fun trailingIconContentColor(enabled: Boolean, selected: Boolean): Color {
+ return when {
!enabled -> disabledTrailingIconColor
!selected -> trailingIconColor
else -> selectedTrailingIconColor
}
- return rememberUpdatedState(target)
}
override fun equals(other: Any?): Boolean {
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
index 57c2bbc..5bc9e9b 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
@@ -84,7 +84,7 @@
.minimumInteractiveComponentSize()
.size(IconButtonTokens.StateLayerSize)
.clip(IconButtonTokens.StateLayerShape.value)
- .background(color = colors.containerColor(enabled).value)
+ .background(color = colors.containerColor(enabled))
.clickable(
onClick = onClick,
enabled = enabled,
@@ -97,7 +97,7 @@
),
contentAlignment = Alignment.Center
) {
- val contentColor = colors.contentColor(enabled).value
+ val contentColor = colors.contentColor(enabled)
CompositionLocalProvider(LocalContentColor provides contentColor, content = content)
}
}
@@ -207,8 +207,8 @@
modifier = modifier.semantics { role = Role.Button },
enabled = enabled,
shape = shape,
- color = colors.containerColor(enabled).value,
- contentColor = colors.contentColor(enabled).value,
+ color = colors.containerColor(enabled),
+ contentColor = colors.contentColor(enabled),
interactionSource = interactionSource
) {
Box(
@@ -267,8 +267,8 @@
modifier = modifier.semantics { role = Role.Button },
enabled = enabled,
shape = shape,
- color = colors.containerColor(enabled).value,
- contentColor = colors.contentColor(enabled).value,
+ color = colors.containerColor(enabled),
+ contentColor = colors.contentColor(enabled),
interactionSource = interactionSource
) {
Box(
@@ -454,8 +454,8 @@
modifier = modifier.semantics { role = Role.Button },
enabled = enabled,
shape = shape,
- color = colors.containerColor(enabled).value,
- contentColor = colors.contentColor(enabled).value,
+ color = colors.containerColor(enabled),
+ contentColor = colors.contentColor(enabled),
border = border,
interactionSource = interactionSource
) {
@@ -825,20 +825,16 @@
*
* @param enabled whether the icon button is enabled
*/
- @Composable
- internal fun containerColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) containerColor else disabledContainerColor)
- }
+ internal fun containerColor(enabled: Boolean): Color =
+ if (enabled) containerColor else disabledContainerColor
/**
* Represents the content color for this icon button, depending on [enabled].
*
* @param enabled whether the icon button is enabled
*/
- @Composable
- internal fun contentColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) contentColor else disabledContentColor)
- }
+ internal fun contentColor(enabled: Boolean): Color =
+ if (enabled) contentColor else disabledContentColor
override fun equals(other: Any?): Boolean {
if (this === other) return true
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
index 20588bd..63c2fc5 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
@@ -28,8 +28,6 @@
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.ReadOnlyComposable
-import androidx.compose.runtime.State
-import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Alignment.Companion.CenterVertically
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -94,7 +92,7 @@
) {
val decoratedHeadlineContent: @Composable () -> Unit = {
ProvideTextStyleFromToken(
- colors.headlineColor(enabled = true).value,
+ colors.headlineColor(enabled = true),
ListTokens.ListItemLabelTextFont,
headlineContent
)
@@ -102,7 +100,7 @@
val decoratedSupportingContent: @Composable (() -> Unit)? = supportingContent?.let {
{
ProvideTextStyleFromToken(
- colors.supportingColor().value,
+ colors.supportingColor(),
ListTokens.ListItemSupportingTextFont,
it
)
@@ -111,7 +109,7 @@
val decoratedOverlineContent: @Composable (() -> Unit)? = overlineContent?.let {
{
ProvideTextStyleFromToken(
- colors.overlineColor().value,
+ colors.overlineColor(),
ListTokens.ListItemOverlineFont,
it
)
@@ -121,7 +119,7 @@
{
Box(Modifier.padding(end = LeadingContentEndPadding)) {
CompositionLocalProvider(
- LocalContentColor provides colors.leadingIconColor(enabled = true).value,
+ LocalContentColor provides colors.leadingIconColor(enabled = true),
content = it
)
}
@@ -131,7 +129,7 @@
{
Box(Modifier.padding(start = TrailingContentStartPadding)) {
ProvideTextStyleFromToken(
- colors.trailingIconColor(enabled = true).value,
+ colors.trailingIconColor(enabled = true),
ListTokens.ListItemTrailingSupportingTextFont,
content = it
)
@@ -140,10 +138,12 @@
}
Surface(
- modifier = Modifier.semantics(mergeDescendants = true) {}.then(modifier),
+ modifier = Modifier
+ .semantics(mergeDescendants = true) {}
+ .then(modifier),
shape = ListItemDefaults.shape,
- color = colors.containerColor().value,
- contentColor = colors.headlineColor(enabled = true).value,
+ color = colors.containerColor(),
+ contentColor = colors.headlineColor(enabled = true),
tonalElevation = tonalElevation,
shadowElevation = shadowElevation,
) {
@@ -191,7 +191,8 @@
val trailingPlaceable = trailingMeasurable.firstOrNull()?.measure(
looseConstraints.offset(
horizontal = -currentTotalWidth
- ))
+ )
+ )
currentTotalWidth += widthOrZero(trailingPlaceable)
var currentTotalHeight = 0
@@ -199,14 +200,16 @@
val headlinePlaceable = headlineMeasurable.firstOrNull()?.measure(
looseConstraints.offset(
horizontal = -currentTotalWidth
- ))
+ )
+ )
currentTotalHeight += heightOrZero(headlinePlaceable)
val supportingPlaceable = supportingMeasurable.firstOrNull()?.measure(
looseConstraints.offset(
horizontal = -currentTotalWidth,
vertical = -currentTotalHeight
- ))
+ )
+ )
currentTotalHeight += heightOrZero(supportingPlaceable)
val isSupportingMultiline = supportingPlaceable != null &&
(supportingPlaceable[FirstBaseline] != supportingPlaceable[LastBaseline])
@@ -215,7 +218,8 @@
looseConstraints.offset(
horizontal = -currentTotalWidth,
vertical = -currentTotalHeight
- ))
+ )
+ )
val listItemType = ListItemType.getListItemType(
hasOverline = overlinePlaceable != null,
@@ -359,7 +363,9 @@
}
val mainContentX = startPadding + widthOrZero(leadingPlaceable)
- val mainContentY = if (isThreeLine) { topPadding } else {
+ val mainContentY = if (isThreeLine) {
+ topPadding
+ } else {
val totalHeight = heightOrZero(headlinePlaceable) + heightOrZero(overlinePlaceable) +
heightOrZero(supportingPlaceable)
CenterVertically.align(totalHeight, height)
@@ -475,46 +481,28 @@
val disabledTrailingIconColor: Color,
) {
/** The container color of this [ListItem] based on enabled state */
- @Composable
- internal fun containerColor(): State<Color> {
- return rememberUpdatedState(containerColor)
+ internal fun containerColor(): Color {
+ return containerColor
}
/** The color of this [ListItem]'s headline text based on enabled state */
- @Composable
- internal fun headlineColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) headlineColor else disabledHeadlineColor
- )
+ internal fun headlineColor(enabled: Boolean): Color {
+ return if (enabled) headlineColor else disabledHeadlineColor
}
/** The color of this [ListItem]'s leading content based on enabled state */
- @Composable
- internal fun leadingIconColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) leadingIconColor else disabledLeadingIconColor
- )
- }
+ internal fun leadingIconColor(enabled: Boolean): Color =
+ if (enabled) leadingIconColor else disabledLeadingIconColor
/** The color of this [ListItem]'s overline text based on enabled state */
- @Composable
- internal fun overlineColor(): State<Color> {
- return rememberUpdatedState(overlineColor)
- }
+ internal fun overlineColor(): Color = overlineColor
/** The color of this [ListItem]'s supporting text based on enabled state */
- @Composable
- internal fun supportingColor(): State<Color> {
- return rememberUpdatedState(supportingTextColor)
- }
+ internal fun supportingColor(): Color = supportingTextColor
/** The color of this [ListItem]'s trailing content based on enabled state */
- @Composable
- internal fun trailingIconColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) trailingIconColor else disabledTrailingIconColor
- )
- }
+ internal fun trailingIconColor(enabled: Boolean): Color =
+ if (enabled) trailingIconColor else disabledTrailingIconColor
}
@Composable
@@ -566,10 +554,13 @@
// TODO: Make sure these values stay up to date until replaced with tokens.
@VisibleForTesting
internal val ListItemVerticalPadding = 8.dp
+
@VisibleForTesting
internal val ListItemThreeLineVerticalPadding = 12.dp
+
@VisibleForTesting
internal val ListItemStartPadding = 16.dp
+
@VisibleForTesting
internal val ListItemEndPadding = 24.dp
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Menu.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Menu.kt
index 70af861..3337530 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Menu.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Menu.kt
@@ -145,9 +145,8 @@
* @param enabled whether the menu item is enabled
*/
@Composable
- internal fun leadingIconColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) leadingIconColor else disabledLeadingIconColor)
- }
+ internal fun leadingIconColor(enabled: Boolean): Color =
+ if (enabled) leadingIconColor else disabledLeadingIconColor
/**
* Represents the trailing icon color for a menu item, depending on its [enabled] state.
@@ -155,9 +154,8 @@
* @param enabled whether the menu item is enabled
*/
@Composable
- internal fun trailingIconColor(enabled: Boolean): State<Color> {
- return rememberUpdatedState(if (enabled) trailingIconColor else disabledTrailingIconColor)
- }
+ internal fun trailingIconColor(enabled: Boolean): Color =
+ if (enabled) trailingIconColor else disabledTrailingIconColor
override fun equals(other: Any?): Boolean {
if (this === other) return true
@@ -284,7 +282,7 @@
ProvideTextStyle(MaterialTheme.typography.fromToken(MenuTokens.ListItemLabelTextFont)) {
if (leadingIcon != null) {
CompositionLocalProvider(
- LocalContentColor provides colors.leadingIconColor(enabled).value,
+ LocalContentColor provides colors.leadingIconColor(enabled),
) {
Box(Modifier.defaultMinSize(minWidth = MenuTokens.ListItemLeadingIconSize)) {
leadingIcon()
@@ -313,7 +311,7 @@
}
if (trailingIcon != null) {
CompositionLocalProvider(
- LocalContentColor provides colors.trailingIconColor(enabled).value
+ LocalContentColor provides colors.trailingIconColor(enabled)
) {
Box(Modifier.defaultMinSize(minWidth = MenuTokens.ListItemTrailingIconSize)) {
trailingIcon()
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt
index a8de2ab..d1483d3 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Switch.kt
@@ -44,7 +44,6 @@
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -185,7 +184,7 @@
minBound: Dp,
maxBound: Dp,
) {
- val trackColor by colors.trackColor(enabled, checked)
+ val trackColor = colors.trackColor(enabled, checked)
val isPressed by interactionSource.collectIsPressedAsState()
val thumbValueDp = with(LocalDensity.current) { thumbValue.value.toDp() }
@@ -215,14 +214,13 @@
.height(SwitchHeight)
.border(
SwitchTokens.TrackOutlineWidth,
- colors.borderColor(enabled, checked).value,
+ colors.borderColor(enabled, checked),
trackShape
)
.background(trackColor, trackShape)
Box(modifier) {
- val thumbColor by colors.thumbColor(enabled, checked)
- val resolvedThumbColor = thumbColor
+ val resolvedThumbColor = colors.thumbColor(enabled, checked)
Box(
modifier = Modifier
.align(Alignment.CenterStart)
@@ -238,7 +236,7 @@
if (thumbContent != null) {
val iconColor = colors.iconColor(enabled, checked)
CompositionLocalProvider(
- LocalContentColor provides iconColor.value,
+ LocalContentColor provides iconColor,
content = thumbContent
)
}
@@ -387,16 +385,12 @@
* @param enabled whether the [Switch] is enabled or not
* @param checked whether the [Switch] is checked or not
*/
- @Composable
- internal fun thumbColor(enabled: Boolean, checked: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) {
- if (checked) checkedThumbColor else uncheckedThumbColor
- } else {
- if (checked) disabledCheckedThumbColor else disabledUncheckedThumbColor
- }
- )
- }
+ internal fun thumbColor(enabled: Boolean, checked: Boolean): Color =
+ if (enabled) {
+ if (checked) checkedThumbColor else uncheckedThumbColor
+ } else {
+ if (checked) disabledCheckedThumbColor else disabledUncheckedThumbColor
+ }
/**
* Represents the color used for the switch's track, depending on [enabled] and [checked].
@@ -404,16 +398,12 @@
* @param enabled whether the [Switch] is enabled or not
* @param checked whether the [Switch] is checked or not
*/
- @Composable
- internal fun trackColor(enabled: Boolean, checked: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) {
- if (checked) checkedTrackColor else uncheckedTrackColor
- } else {
- if (checked) disabledCheckedTrackColor else disabledUncheckedTrackColor
- }
- )
- }
+ internal fun trackColor(enabled: Boolean, checked: Boolean): Color =
+ if (enabled) {
+ if (checked) checkedTrackColor else uncheckedTrackColor
+ } else {
+ if (checked) disabledCheckedTrackColor else disabledUncheckedTrackColor
+ }
/**
* Represents the color used for the switch's border, depending on [enabled] and [checked].
@@ -421,16 +411,12 @@
* @param enabled whether the [Switch] is enabled or not
* @param checked whether the [Switch] is checked or not
*/
- @Composable
- internal fun borderColor(enabled: Boolean, checked: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) {
- if (checked) checkedBorderColor else uncheckedBorderColor
- } else {
- if (checked) disabledCheckedBorderColor else disabledUncheckedBorderColor
- }
- )
- }
+ internal fun borderColor(enabled: Boolean, checked: Boolean): Color =
+ if (enabled) {
+ if (checked) checkedBorderColor else uncheckedBorderColor
+ } else {
+ if (checked) disabledCheckedBorderColor else disabledUncheckedBorderColor
+ }
/**
* Represents the content color passed to the icon if used
@@ -438,16 +424,12 @@
* @param enabled whether the [Switch] is enabled or not
* @param checked whether the [Switch] is checked or not
*/
- @Composable
- internal fun iconColor(enabled: Boolean, checked: Boolean): State<Color> {
- return rememberUpdatedState(
- if (enabled) {
- if (checked) checkedIconColor else uncheckedIconColor
- } else {
- if (checked) disabledCheckedIconColor else disabledUncheckedIconColor
- }
- )
- }
+ internal fun iconColor(enabled: Boolean, checked: Boolean): Color =
+ if (enabled) {
+ if (checked) checkedIconColor else uncheckedIconColor
+ } else {
+ if (checked) disabledCheckedIconColor else disabledUncheckedIconColor
+ }
override fun equals(other: Any?): Boolean {
if (this === other) return true