diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt b/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt index 577485da0d..ff2bf968ae 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt @@ -57,7 +57,7 @@ fun SimpleTextField( handleColor = TangemTheme.colors.text.accent, backgroundColor = TangemTheme.colors.text.accent.copy(alpha = 0.3f), ) - + val textFieldValue = textFieldValueState.copy(text = value) var lastTextValue by remember(proxyValue, isValuePasted) { textFieldValueState = textFieldValueState.copy( text = proxyValue, @@ -70,6 +70,13 @@ fun SimpleTextField( mutableStateOf(proxyValue) } + val isSelectionChanged by rememberSelectionChanged(textFieldValue, textFieldValueState) + LaunchedEffect(key1 = isSelectionChanged) { + if (isSelectionChanged) { + textFieldValueState = textFieldValue + } + } + // resets paste value cursor trigger LaunchedEffect(key1 = isValuePasted) { if (isValuePasted) { @@ -79,7 +86,7 @@ fun SimpleTextField( CompositionLocalProvider(LocalTextSelectionColors provides customTextSelectionColors) { BasicTextField( - value = textFieldValueState, + value = textFieldValue, onValueChange = { newTextFieldValueState -> textFieldValueState = newTextFieldValueState @@ -131,4 +138,14 @@ private fun SimpleTextPlaceholder( } textValue() } +} + +@Composable +private fun rememberSelectionChanged(textFieldValue: TextFieldValue, textFieldValueState: TextFieldValue) = remember { + derivedStateOf { + val isSelectionChanged = textFieldValue.selection != textFieldValueState.selection || + textFieldValue.composition != textFieldValueState.composition + val isTextNotChanged = textFieldValue.text == textFieldValueState.text + isSelectionChanged && isTextNotChanged + } } \ No newline at end of file