Skip to content
Snippets Groups Projects
Verified Commit 671a6d06 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

feat: handle tab focus

parent 7e2ea85d
No related branches found
No related tags found
No related merge requests found
...@@ -21,6 +21,7 @@ import androidx.compose.ui.text.input.TextFieldValue ...@@ -21,6 +21,7 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import de.justjanne.quasseldroid.service.ConnectionData import de.justjanne.quasseldroid.service.ConnectionData
import de.justjanne.quasseldroid.util.extensions.handleTabFocus
import de.justjanne.quasseldroid.util.saver.TextFieldValueSaver import de.justjanne.quasseldroid.util.saver.TextFieldValueSaver
import java.net.InetSocketAddress import java.net.InetSocketAddress
...@@ -55,7 +56,8 @@ fun LoginView( ...@@ -55,7 +56,8 @@ fun LoginView(
singleLine = true, singleLine = true,
modifier = Modifier modifier = Modifier
.padding(16.dp) .padding(16.dp)
.fillMaxWidth(), .fillMaxWidth()
.handleTabFocus(focusManager),
label = { Text("Hostname") }, label = { Text("Hostname") },
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next), keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(onNext = { keyboardActions = KeyboardActions(onNext = {
...@@ -68,7 +70,8 @@ fun LoginView( ...@@ -68,7 +70,8 @@ fun LoginView(
singleLine = true, singleLine = true,
modifier = Modifier modifier = Modifier
.padding(16.dp) .padding(16.dp)
.fillMaxWidth(), .fillMaxWidth()
.handleTabFocus(focusManager),
label = { Text("Port") }, label = { Text("Port") },
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next), keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(onNext = { keyboardActions = KeyboardActions(onNext = {
...@@ -81,7 +84,8 @@ fun LoginView( ...@@ -81,7 +84,8 @@ fun LoginView(
singleLine = true, singleLine = true,
modifier = Modifier modifier = Modifier
.padding(16.dp) .padding(16.dp)
.fillMaxWidth(), .fillMaxWidth()
.handleTabFocus(focusManager),
label = { Text("Username") }, label = { Text("Username") },
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next), keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(onNext = { keyboardActions = KeyboardActions(onNext = {
...@@ -94,7 +98,8 @@ fun LoginView( ...@@ -94,7 +98,8 @@ fun LoginView(
singleLine = true, singleLine = true,
modifier = Modifier modifier = Modifier
.padding(16.dp) .padding(16.dp)
.fillMaxWidth(), .fillMaxWidth()
.handleTabFocus(focusManager),
label = { Text("Password") }, label = { Text("Password") },
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next), keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(onNext = { keyboardActions = KeyboardActions(onNext = {
......
package de.justjanne.quasseldroid.util.extensions
import android.view.KeyEvent
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusDirection
import androidx.compose.ui.focus.FocusManager
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onPreviewKeyEvent
fun Modifier.handleTabFocus(focusManager: FocusManager): Modifier =
onPreviewKeyEvent {
if (it.key == Key.Tab) {
if (it.nativeKeyEvent.action == KeyEvent.ACTION_UP) {
focusManager.moveFocus(
if (it.nativeKeyEvent.isShiftPressed) FocusDirection.Up
else FocusDirection.Down
)
}
true
} else {
false
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment