From f1f1b7841e0327fe395cb0332752f336faf8cf20 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Fri, 2 Jun 2023 16:11:15 +0300 Subject: [PATCH] Free focus on drag start --- .../sadellie/unitto/feature/calculator/CalculatorScreen.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt index bf7fbf4d..51758964 100644 --- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt +++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt @@ -56,6 +56,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.onPlaced import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue @@ -114,6 +115,7 @@ private fun CalculatorScreen( evaluate: () -> Unit, clearHistory: () -> Unit ) { + val focusManager = LocalFocusManager.current val dragAmount = remember { Animatable(0f) } val dragCoroutineScope = rememberCoroutineScope() val dragAnimSpec = rememberSplineBasedDecay() @@ -183,6 +185,10 @@ private fun CalculatorScreen( dragAmount.snapTo(draggedAmount) } }, + onDragStarted = { + // Moving composables with focus causes performance drop + focusManager.clearFocus(true) + }, onDragStopped = { velocity -> dragCoroutineScope.launch { dragAmount.animateDecay(velocity, dragAnimSpec)