diff options
| author | saber safavi <saber.safavi@codic.se> | 2023-08-10 10:49:59 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-08-14 10:47:15 +0200 |
| commit | 35cc4b4162e4bcc8aea6f3437c73b33e36097c5f (patch) | |
| tree | 9990e75da721ebcf0be17927808c8d206f9bd720 | |
| parent | 1c2a71f2080e69a0918aac715aa1538572b321de (diff) | |
| download | mullvadvpn-35cc4b4162e4bcc8aea6f3437c73b33e36097c5f.tar.xz mullvadvpn-35cc4b4162e4bcc8aea6f3437c73b33e36097c5f.zip | |
Change focus order in select location screen
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt index b66cb555b2..b76b097ad1 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt @@ -18,9 +18,14 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusProperties +import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -55,6 +60,7 @@ fun PreviewSelectLocationScreen() { AppTheme { SelectLocationScreen(uiState = state, uiCloseAction = MutableSharedFlow()) } } +@OptIn(ExperimentalComposeUiApi::class) @Composable fun SelectLocationScreen( uiState: SelectLocationUiState, @@ -64,6 +70,7 @@ fun SelectLocationScreen( onBackClick: () -> Unit = {} ) { LaunchedEffect(Unit) { uiCloseAction.collect { onBackClick() } } + val (backFocus, listFocus, searchBarFocus) = remember { FocusRequester.createRefs() } Column( modifier = Modifier.background(MaterialTheme.colorScheme.background).fillMaxWidth().fillMaxHeight() @@ -80,7 +87,15 @@ fun SelectLocationScreen( painter = painterResource(id = R.drawable.icon_back), contentDescription = null, modifier = - Modifier.size(Dimens.titleIconSize).rotate(270f).clickable { onBackClick() } + Modifier.focusRequester(backFocus) + .focusProperties { next = listFocus } + .focusProperties { + down = listFocus + right = searchBarFocus + } + .size(Dimens.titleIconSize) + .rotate(270f) + .clickable { onBackClick() } ) Text( text = stringResource(id = R.string.select_location), @@ -96,6 +111,8 @@ fun SelectLocationScreen( SearchTextField( modifier = Modifier.fillMaxWidth() + .focusRequester(searchBarFocus) + .focusProperties { next = backFocus } .height(Dimens.searchFieldHeight) .padding(horizontal = Dimens.searchFieldHorizontalPadding) ) { searchString -> @@ -103,7 +120,7 @@ fun SelectLocationScreen( } Spacer(modifier = Modifier.height(height = Dimens.verticalSpace)) LazyColumn( - modifier = Modifier.fillMaxWidth().fillMaxHeight(), + modifier = Modifier.focusRequester(listFocus).fillMaxWidth().fillMaxHeight(), horizontalAlignment = Alignment.CenterHorizontally ) { when (uiState) { |
