From cd09c15df48bbd9eeb6922713ef7eba5af2845b8 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Wed, 15 Mar 2023 13:57:51 +0100 Subject: [PATCH] Fix behaviour of Enter and Tab hardware keys in TextFields (#216) * Fix behaviour of Enter and Tab hardware keys in TextFields * Add changelog --- changelog.d/216.bugfix | 1 + .../android/features/login/impl/root/LoginRootView.kt | 8 ++++---- .../designsystem/theme/components/OutlinedTextField.kt | 6 ++++-- 3 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 changelog.d/216.bugfix diff --git a/changelog.d/216.bugfix b/changelog.d/216.bugfix new file mode 100644 index 0000000000..7f54dfb3a9 --- /dev/null +++ b/changelog.d/216.bugfix @@ -0,0 +1 @@ +Make sure `Modifier.onTabOrEnterKeyFocusNext` doesn't add line breaks or tabs to TextFields. diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/root/LoginRootView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/root/LoginRootView.kt index 2046a9c502..2766e0605b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/root/LoginRootView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/root/LoginRootView.kt @@ -244,8 +244,8 @@ internal fun LoginForm( readOnly = !interactionEnabled, modifier = Modifier .fillMaxWidth() - .testTag(TestTags.loginEmailUsername) - .onTabOrEnterKeyFocusNext(focusManager), + .onTabOrEnterKeyFocusNext(focusManager) + .testTag(TestTags.loginEmailUsername), label = { Text(text = stringResource(StringR.string.ex_login_username_hint)) }, @@ -284,8 +284,8 @@ internal fun LoginForm( readOnly = !interactionEnabled, modifier = Modifier .fillMaxWidth() - .testTag(TestTags.loginPassword) - .onTabOrEnterKeyFocusNext(focusManager), + .onTabOrEnterKeyFocusNext(focusManager) + .testTag(TestTags.loginPassword), onValueChange = { passwordFieldState = it eventSink(LoginRootEvents.SetPassword(it)) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/OutlinedTextField.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/OutlinedTextField.kt index c5f11512ac..10f4460a5e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/OutlinedTextField.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/OutlinedTextField.kt @@ -99,8 +99,10 @@ fun OutlinedTextField( @OptIn(ExperimentalComposeUiApi::class) fun Modifier.onTabOrEnterKeyFocusNext(focusManager: FocusManager): Modifier = onPreviewKeyEvent { event -> - if (event.type == KeyEventType.KeyUp && (event.key == Key.Tab || event.key == Key.Enter)) { - focusManager.moveFocus(FocusDirection.Down) + if (event.key == Key.Tab || event.key == Key.Enter) { + if (event.type == KeyEventType.KeyUp) { + focusManager.moveFocus(FocusDirection.Down) + } true } else { false