summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Anton Potapov <apotapov@google.com> 2025-03-05 05:51:55 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-05 05:51:55 -0800
commit973c2d1a24c186fb932b018e6bc8c50bbbd1cfc3 (patch)
tree8b7b744d5a418408ecdd39bf445a82ed86949993
parentbd5d97de964f67b21bf168103b36d98779a8ac3c (diff)
parent83912758eadf9a30bec39127c3e4653bc4772391 (diff)
Merge "Fix Slider to accept 0 stepDistance" into main
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt24
1 files changed, 14 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt b/packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt
index 720d5507e224..f6582a005035 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt
@@ -72,10 +72,10 @@ fun Slider(
valueRange: ClosedFloatingPointRange<Float>,
onValueChanged: (Float) -> Unit,
onValueChangeFinished: ((Float) -> Unit)?,
- stepDistance: Float,
isEnabled: Boolean,
accessibilityParams: AccessibilityParams,
modifier: Modifier = Modifier,
+ stepDistance: Float = 0f,
colors: SliderColors = SliderDefaults.colors(),
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
haptics: Haptics = Haptics.Disabled,
@@ -83,7 +83,7 @@ fun Slider(
isReverseDirection: Boolean = false,
track: (@Composable (SliderState) -> Unit)? = null,
) {
- require(stepDistance > 0) { "stepDistance must be positive" }
+ require(stepDistance >= 0) { "stepDistance must not be negative" }
val coroutineScope = rememberCoroutineScope()
val snappedValue = snapValue(value, valueRange, stepDistance)
val hapticsViewModel = haptics.createViewModel(snappedValue, valueRange, interactionSource)
@@ -192,16 +192,20 @@ private fun AccessibilityParams.createSemantics(
setProgress { targetValue ->
val targetDirection =
when {
- targetValue > value -> 1
- targetValue < value -> -1
- else -> 0
+ targetValue > value -> 1f
+ targetValue < value -> -1f
+ else -> 0f
+ }
+ val offset =
+ if (stepDistance > 0) {
+ // advance to the next step when stepDistance is > 0
+ targetDirection * stepDistance
+ } else {
+ // advance to the desired value otherwise
+ targetValue - value
}
- val newValue =
- (value + targetDirection * stepDistance).coerceIn(
- valueRange.start,
- valueRange.endInclusive,
- )
+ val newValue = (value + offset).coerceIn(valueRange.start, valueRange.endInclusive)
onValueChanged(newValue)
true
}