diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/common/WeatherLocationSearchDialog.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/common/WeatherLocationSearchDialog.kt index 9ec063205..f47d05a06 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/common/WeatherLocationSearchDialog.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/common/WeatherLocationSearchDialog.kt @@ -42,9 +42,7 @@ fun WeatherLocationSearchDialog( BottomSheetDialog(onDismissRequest) { var query by remember { mutableStateOf("") } Column( - modifier = Modifier - .fillMaxSize() - .padding(it) + modifier = Modifier.fillMaxSize() ) { SearchBar( modifier = Modifier.padding(bottom = 8.dp), @@ -79,8 +77,8 @@ fun WeatherLocationSearchDialog( ) } else if (locations.isNotEmpty()) { LazyColumn( - modifier = Modifier - .fillMaxWidth() + modifier = Modifier.fillMaxWidth(), + contentPadding = it ) { items(locations) { Text( diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt index 8581a298b..6c655fa63 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/component/BottomSheetDialog.kt @@ -1,6 +1,8 @@ package de.mm20.launcher2.ui.component import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material3.ModalBottomSheet @@ -8,12 +10,15 @@ import androidx.compose.material3.SheetState import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp +import de.mm20.launcher2.ui.ktx.toDp @Composable fun BottomSheetDialog( onDismissRequest: () -> Unit, bottomSheetState: SheetState = rememberModalBottomSheetState(), + windowInsets: WindowInsets = WindowInsets(left = 24.dp, right = 24.dp), content: @Composable (paddingValues: PaddingValues) -> Unit, ) { ModalBottomSheet( @@ -22,7 +27,10 @@ fun BottomSheetDialog( .padding(top = 8.dp), sheetState = bottomSheetState, onDismissRequest = onDismissRequest, + contentWindowInsets = { windowInsets } ) { - content(PaddingValues(horizontal = 24.dp, vertical = 8.dp)) + content(PaddingValues( + bottom = WindowInsets.navigationBars.getBottom(LocalDensity.current).toDp() + 8.dp, + )) } } \ No newline at end of file diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/component/emojipicker/EmojiPicker.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/component/emojipicker/EmojiPicker.kt index dfbaec3bc..50136552f 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/component/emojipicker/EmojiPicker.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/component/emojipicker/EmojiPicker.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -41,6 +42,7 @@ import kotlinx.coroutines.launch fun EmojiPicker( modifier: Modifier = Modifier, onEmojiSelected: (String) -> Unit = {}, + contentPadding: PaddingValues = PaddingValues(0.dp) ) { val context = LocalContext.current @@ -105,6 +107,7 @@ fun EmojiPicker( LazyVerticalGrid( GridCells.Adaptive(48.dp), modifier = modifier, + contentPadding = contentPadding ) { stickyHeader { Row( diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt index 749033c5f..cd6cf8a94 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceScreen.kt @@ -164,13 +164,15 @@ fun PreferenceScreen( LazyColumn( modifier = Modifier .fillMaxSize() - .nestedScroll(scrollBehavior.nestedScrollConnection) - .padding(it), + .nestedScroll(scrollBehavior.nestedScrollConnection), state = lazyColumnState, content = content, verticalArrangement = verticalArrangement, contentPadding = PaddingValues( - 12.dp + top = it.calculateTopPadding(), + bottom = it.calculateBottomPadding() + 4.dp, + start = 12.dp, + end = 12.dp ) ) } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt index 639d7b47a..c925d5c73 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt @@ -20,6 +20,7 @@ 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.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -100,13 +101,16 @@ fun ConfigureWidgetSheet( onWidgetUpdated: (Widget) -> Unit, onDismiss: () -> Unit, ) { - BottomSheetDialog(onDismissRequest = onDismiss) { + BottomSheetDialog( + onDismissRequest = onDismiss, + windowInsets = WindowInsets() + ) { Column( modifier = Modifier .fillMaxWidth() .padding(horizontal = if (widget is AppWidget) 8.dp else 16.dp) + .padding(it) .verticalScroll(rememberScrollState()) - .padding(bottom = 8.dp) ) { when (widget) { is WeatherWidget -> ConfigureWeatherWidget(widget, onWidgetUpdated) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditTagSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditTagSheet.kt index 005a06da0..14b034a33 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditTagSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditTagSheet.kt @@ -24,6 +24,7 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button +import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField @@ -91,7 +92,7 @@ fun EditTagSheet( onTagSaved(viewModel.tagName) } onDismiss() - } + }, ) { when (viewModel.page) { EditTagSheetPage.CreateTag -> CreateNewTagPage(viewModel, it) @@ -138,26 +139,20 @@ fun CreateNewTagPage(viewModel: EditTagSheetVM, paddingValues: PaddingValues) { fun PickItems(viewModel: EditTagSheetVM, paddingValues: PaddingValues) { val columns = LocalGridSettings.current.columnCount - 1 - Scaffold( + Scaffold ( contentWindowInsets = WindowInsets(0.dp), - modifier = Modifier.padding(paddingValues), containerColor = Color.Transparent, bottomBar = { - Surface( - modifier = Modifier.fillMaxWidth(), - color = MaterialTheme.colorScheme.surface.copy(alpha = 0.95f), - shape = MaterialTheme.shapes.medium + Box ( + modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp), + contentAlignment = Alignment.CenterEnd ) { - Box { - Button( - onClick = { viewModel.closeItemPicker() }, - modifier = Modifier - .align(Alignment.BottomEnd) - .padding(all = 8.dp) - .padding(end = 12.dp) - ) { - Text(stringResource(R.string.action_next)) - } + + ExtendedFloatingActionButton ( + modifier = Modifier.padding(paddingValues), + onClick = {viewModel.closeItemPicker()} + ) { + Text(stringResource(R.string.action_next)) } } } @@ -424,9 +419,7 @@ fun PickIcon( ) } Column( - modifier = Modifier - .fillMaxWidth() - .padding(paddingValues) + modifier = Modifier.fillMaxWidth() ) { SingleChoiceSegmentedButtonRow( modifier = Modifier.fillMaxWidth(), @@ -455,6 +448,7 @@ fun PickIcon( IconPicker( searchable = tag, onSelect = { viewModel.selectIcon(it) }, + contentPadding = paddingValues ) } @@ -466,6 +460,7 @@ fun PickIcon( onEmojiSelected = { viewModel.selectIcon(CustomTextIcon(text = it)) }, + contentPadding = paddingValues ) } } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt index e271b4568..b4337aea1 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt @@ -272,8 +272,8 @@ fun WidgetPickerSheet( ) { val builtIn by viewModel.builtInWidgets.collectAsState(emptyList()) LazyColumn( - modifier = Modifier - .fillMaxWidth() + modifier = Modifier.fillMaxWidth(), + contentPadding = it ) { stickyHeader { SearchBar( @@ -287,7 +287,7 @@ fun WidgetPickerSheet( ) ) } - .padding(bottom = 16.dp, start = 16.dp, end = 16.dp), + .padding(bottom = 16.dp), windowInsets = WindowInsets(0.dp), query = query, onQueryChange = { viewModel.search(it) }, @@ -315,7 +315,7 @@ fun WidgetPickerSheet( OutlinedCard( modifier = Modifier .fillMaxWidth() - .padding(bottom = 16.dp, start = 16.dp, end = 16.dp), + .padding(bottom = 16.dp), onClick = { val id = UUID.randomUUID() val widget = when (it.type) { @@ -372,7 +372,7 @@ fun WidgetPickerSheet( ) Row( modifier = Modifier - .padding(horizontal = 16.dp, vertical = 4.dp) + .padding(vertical = 4.dp) .clip(MaterialTheme.shapes.small) .background(background) .clickable(enabled = !expandAllGroups) { @@ -408,7 +408,7 @@ fun WidgetPickerSheet( OutlinedCard( modifier = Modifier .fillMaxWidth() - .padding(horizontal = 16.dp, vertical = 4.dp) + .padding(vertical = 4.dp) .animateItem(), onClick = { bindAppWidgetStarter.launch(it) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt index b226da160..2d5a942bb 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt @@ -536,7 +536,7 @@ fun NoteReadWriteErrorSheet( modifier = Modifier .fillMaxWidth() .verticalScroll(rememberScrollState()) - .padding(top = 8.dp, bottom = 16.dp) + .padding(it) ) { Text( text = message, diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/shapes/ShapeSchemeSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/shapes/ShapeSchemeSettingsScreen.kt index 09d4caaea..9856a8fd9 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/shapes/ShapeSchemeSettingsScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/shapes/ShapeSchemeSettingsScreen.kt @@ -497,7 +497,8 @@ fun ShapePreference( Column( modifier = Modifier .verticalScroll(rememberScrollState()) - .padding(it), + .padding(it) + .padding(bottom = 8.dp), verticalArrangement = Arrangement.spacedBy(16.dp) ) { val previewShape = if ((currentCornerStyle ?: baseShape.corners