Browse Source

Clear focus when submitting forms to prevent issues with the IME keyboard. (#139)

misc/jme/add-logging-to-state-machine
Jorge Martin Espinosa 2 years ago committed by GitHub
parent
commit
811cca6289
  1. 1
      changelog.d/133.bugfix
  2. 12
      features/login/src/main/kotlin/io/element/android/features/login/changeserver/ChangeServerView.kt
  3. 12
      features/login/src/main/kotlin/io/element/android/features/login/root/LoginRootScreen.kt

1
changelog.d/133.bugfix

@ -0,0 +1 @@ @@ -0,0 +1 @@
Clear focus on TextFields when submitting forms to prevent issues with the IME keyboard.

12
features/login/src/main/kotlin/io/element/android/features/login/changeserver/ChangeServerView.kt

@ -92,6 +92,14 @@ fun ChangeServerView( @@ -92,6 +92,14 @@ fun ChangeServerView(
}
}
val focusManager = LocalFocusManager.current
fun submit() {
// Clear focus to prevent keyboard issues with textfields
focusManager.clearFocus(force = true)
eventSink(ChangeServerEvents.Submit)
}
Scaffold(
topBar = {
TopAppBar(
@ -175,7 +183,7 @@ fun ChangeServerView( @@ -175,7 +183,7 @@ fun ChangeServerView(
imeAction = ImeAction.Done,
),
keyboardActions = KeyboardActions(
onDone = { eventSink(ChangeServerEvents.Submit) }
onDone = { submit() }
),
singleLine = true,
maxLines = 1,
@ -216,7 +224,7 @@ fun ChangeServerView( @@ -216,7 +224,7 @@ fun ChangeServerView(
)
Spacer(Modifier.height(32.dp))
Button(
onClick = { eventSink(ChangeServerEvents.Submit) },
onClick = ::submit,
enabled = interactionEnabled && state.submitEnabled,
modifier = Modifier
.fillMaxWidth()

12
features/login/src/main/kotlin/io/element/android/features/login/root/LoginRootScreen.kt

@ -223,6 +223,14 @@ internal fun LoginForm( @@ -223,6 +223,14 @@ internal fun LoginForm(
val focusManager = LocalFocusManager.current
val eventSink = state.eventSink
fun submit() {
// Clear focus to prevent keyboard issues with textfields
focusManager.clearFocus(force = true)
eventSink(LoginRootEvents.Submit)
}
Column(modifier) {
Text(
text = stringResource(StringR.string.login_form_title),
@ -301,7 +309,7 @@ internal fun LoginForm( @@ -301,7 +309,7 @@ internal fun LoginForm(
imeAction = ImeAction.Done,
),
keyboardActions = KeyboardActions(
onDone = { eventSink(LoginRootEvents.Submit) }
onDone = { submit() }
),
singleLine = true,
maxLines = 1,
@ -310,7 +318,7 @@ internal fun LoginForm( @@ -310,7 +318,7 @@ internal fun LoginForm(
// Submit
Button(
onClick = { eventSink(LoginRootEvents.Submit) },
onClick = ::submit,
enabled = interactionEnabled && state.submitEnabled,
modifier = Modifier
.fillMaxWidth()

Loading…
Cancel
Save