From cb08d32d142a1dbfc7dba4955a2acee80e700ff4 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Tue, 11 Feb 2025 22:16:18 +0100 Subject: [PATCH] slightly improve weird behavior --- app/src/main/java/helium314/keyboard/settings/SearchScreen.kt | 3 ++- .../main/java/helium314/keyboard/settings/SettingsNavHost.kt | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt b/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt index 4d9d7b0ec..40c57245f 100644 --- a/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt @@ -113,6 +113,7 @@ fun SearchScreen( ) { var searchText by rememberSaveable(stateSaver = TextFieldValue.Saver) { mutableStateOf(TextFieldValue()) } Column(Modifier.fillMaxSize()) { + // todo: saving is good on orientation change, but bad on pressing back... var showSearch by rememberSaveable { mutableStateOf(false) } fun setShowSearch(value: Boolean) { @@ -120,7 +121,7 @@ fun SearchScreen( if (!value) searchText = TextFieldValue() } BackHandler { - if (showSearch) setShowSearch(false) + if (showSearch || searchText.text.isNotEmpty()) setShowSearch(false) else onClickBack() } Surface( diff --git a/app/src/main/java/helium314/keyboard/settings/SettingsNavHost.kt b/app/src/main/java/helium314/keyboard/settings/SettingsNavHost.kt index 3d68e1742..b79147727 100644 --- a/app/src/main/java/helium314/keyboard/settings/SettingsNavHost.kt +++ b/app/src/main/java/helium314/keyboard/settings/SettingsNavHost.kt @@ -7,6 +7,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.unit.LayoutDirection +import androidx.navigation.NavOptions import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController @@ -100,7 +101,7 @@ fun SettingsNavHost( ColorsScreen(isNight = true, onClickBack = ::goBack) } } - if (target.value != SettingsDestination.Settings) + if (target.value != SettingsDestination.Settings/* && target.value != navController.currentBackStackEntry?.destination?.route*/) navController.navigate(route = target.value) } @@ -128,5 +129,6 @@ object SettingsDestination { navScope.launch { delay(10); navTarget.value = target } } else navTarget.value = target + navScope.launch { delay(50); navTarget.value = Settings } } }