diff --git a/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt b/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt index dec486ef5..7448d01ab 100644 --- a/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/SearchScreen.kt @@ -6,14 +6,13 @@ import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.ime +import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState @@ -64,10 +63,12 @@ fun SearchSettingsScreen( content = { if (content != null) content() else { - Scaffold(contentWindowInsets = WindowInsets.systemBars.union(WindowInsets.ime)) { innerPadding -> + Scaffold( + contentWindowInsets = WindowInsets.safeDrawing + .only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom) + ) { innerPadding -> Column( - Modifier.verticalScroll(rememberScrollState()) - .then(Modifier.padding(bottom = innerPadding.calculateBottomPadding())) + Modifier.verticalScroll(rememberScrollState()).then(Modifier.padding(innerPadding)) ) { settings.forEach { if (it is Int) { @@ -206,8 +207,11 @@ fun SearchScreen( } } else { val items = filteredItems(searchText.text) - Scaffold(contentWindowInsets = WindowInsets.systemBars.union(WindowInsets.ime)) { innerPadding -> - LazyColumn(contentPadding = PaddingValues.Absolute(bottom = innerPadding.calculateBottomPadding())) { + Scaffold( + contentWindowInsets = WindowInsets.safeDrawing + .only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom) + ) { innerPadding -> + LazyColumn(contentPadding = innerPadding) { items(items) { itemContent(it) } diff --git a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt index c1e249030..013cd39e1 100644 --- a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt +++ b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt @@ -8,17 +8,14 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.view.View -import android.view.WindowInsets.Type import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import androidx.activity.ComponentActivity import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -29,7 +26,6 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView -import androidx.core.view.ViewCompat import helium314.keyboard.compat.locale import helium314.keyboard.keyboard.KeyboardSwitcher import helium314.keyboard.latin.BuildConfig @@ -96,7 +92,7 @@ class SettingsActivity : ComponentActivity(), SharedPreferences.OnSharedPreferen || !UncachedInputMethodManagerUtils.isThisImeEnabled(this, imm) ) } if (spellchecker) - Scaffold(contentWindowInsets = WindowInsets.systemBars.union(WindowInsets.ime)) { innerPadding -> + Scaffold(contentWindowInsets = WindowInsets.safeDrawing) { innerPadding -> Column(Modifier.padding(innerPadding)) { // lazy way of implementing spell checker settings settingsContainer[Settings.PREF_USE_CONTACTS]!!.Preference() settingsContainer[Settings.PREF_BLOCK_POTENTIALLY_OFFENSIVE]!!.Preference() diff --git a/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt index 87ba842b6..7efe23773 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt @@ -3,10 +3,10 @@ package helium314.keyboard.settings.screens import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.ime +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Scaffold @@ -21,10 +21,10 @@ import helium314.keyboard.latin.utils.JniUtils import helium314.keyboard.latin.utils.SubtypeSettings import helium314.keyboard.latin.utils.displayName import helium314.keyboard.settings.NextScreenIcon -import helium314.keyboard.settings.preferences.Preference import helium314.keyboard.settings.SearchSettingsScreen import helium314.keyboard.settings.Theme import helium314.keyboard.settings.initPreview +import helium314.keyboard.settings.preferences.Preference import helium314.keyboard.settings.previewDark @Composable @@ -48,10 +48,11 @@ fun MainSettingsScreen( settings = emptyList(), ) { val enabledSubtypes = SubtypeSettings.getEnabledSubtypes(true) - Scaffold(contentWindowInsets = WindowInsets.systemBars.union(WindowInsets.ime)) { innerPadding -> + Scaffold( + contentWindowInsets = WindowInsets.safeDrawing.only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom) + ) { innerPadding -> Column( - Modifier.verticalScroll(rememberScrollState()) - .then(Modifier.padding(bottom = innerPadding.calculateBottomPadding())) + Modifier.verticalScroll(rememberScrollState()).then(Modifier.padding(innerPadding)) ) { Preference( name = stringResource(R.string.language_and_layouts_title), diff --git a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt index 8d5527442..e9f38a228 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt @@ -10,9 +10,8 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.systemBarsPadding +import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.ExtendedFloatingActionButton @@ -179,7 +178,7 @@ fun PersonalDictionaryScreen( text = { Text(stringResource(R.string.user_dict_add_word_button)) }, icon = { Icon(painter = painterResource(R.drawable.ic_edit), stringResource(R.string.user_dict_add_word_button)) }, modifier = Modifier.wrapContentSize(Alignment.BottomEnd).padding(all = 12.dp) - .then(Modifier.systemBarsPadding().imePadding()) + .then(Modifier.safeDrawingPadding()) ) } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/SubtypeScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/SubtypeScreen.kt index d11c5bdbf..df1161cbe 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/SubtypeScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/SubtypeScreen.kt @@ -5,11 +5,11 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.ime +import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -145,10 +145,12 @@ fun SubtypeScreen( itemContent = { }, filteredItems = { emptyList() } ) { - Scaffold(contentWindowInsets = WindowInsets.systemBars.union(WindowInsets.ime)) { innerPadding -> + Scaffold( + contentWindowInsets = WindowInsets.safeDrawing.only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom) + ) { innerPadding -> Column( modifier = Modifier.verticalScroll(scrollState).padding(horizontal = 12.dp) - .then(Modifier.padding(bottom = innerPadding.calculateBottomPadding())), + .then(Modifier.padding(innerPadding)), verticalArrangement = Arrangement.spacedBy(8.dp), ) { MainLayoutRow(currentSubtype, customMainLayouts) { setCurrentSubtype(it) }