From 870de652bedd0d236e63eebd4316bb432f92f2ca Mon Sep 17 00:00:00 2001 From: Dave Severns <149429124+dseverns-livefront@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:48:49 -0400 Subject: [PATCH] BIT-2431 add condition to only update labelTextWidth on initial layout (#3399) --- .../feature/generator/GeneratorScreen.kt | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorScreen.kt index 4ac583e612..6a1fa88cc0 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorScreen.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorScreen.kt @@ -596,6 +596,20 @@ private fun PasswordLengthSliderItem( val density = LocalDensity.current val sliderRange = minValue.toFloat()..maxValue.toFloat() + val lengthLabel: @Composable () -> Unit = remember { + { + Text( + text = stringResource(id = R.string.length), + modifier = Modifier + .onGloballyPositioned { layoutCoordinates -> + if (labelTextWidth == Dp.Unspecified) { + labelTextWidth = layoutCoordinates.size.width.toDp(density) + } + }, + ) + } + } + Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier @@ -607,15 +621,7 @@ private fun PasswordLengthSliderItem( value = sliderValue.toString(), readOnly = true, onValueChange = { }, - label = { - Text( - text = stringResource(id = R.string.length), - modifier = Modifier - .onGloballyPositioned { - labelTextWidth = it.size.width.toDp(density) - }, - ) - }, + label = lengthLabel, singleLine = true, keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number), modifier = Modifier @@ -636,7 +642,8 @@ private fun PasswordLengthSliderItem( } .testTag("PasswordLengthLabel") .wrapContentWidth() - .width(labelTextWidth + 16.dp + 16.dp), + // We want the width to be no wider than the label + 16dp on either side + .width(16.dp + labelTextWidth + 16.dp), ) Slider(