Remove excess bottom padding in landscape when using gesture navigation.

This commit is contained in:
jeffrey-signal
2025-11-06 16:58:46 -05:00
committed by Michelle Tang
parent c8e0ba8194
commit 6bf2efd96c
2 changed files with 22 additions and 13 deletions

View File

@@ -31,11 +31,17 @@ import androidx.compose.foundation.layout.BoxWithConstraintsScope
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.add
import androidx.compose.foundation.layout.displayCutout
import androidx.compose.foundation.layout.displayCutoutPadding
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
@@ -719,12 +725,19 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
SignalTheme.colors.colorSurface1
}
val modifier = if (windowSizeClass.isSplitPane()) {
Modifier
.systemBarsPadding()
.displayCutoutPadding()
} else {
Modifier
val modifier = when {
windowSizeClass.isSplitPane() -> {
Modifier
.systemBarsPadding()
.displayCutoutPadding()
}
else ->
Modifier
.windowInsetsPadding(
WindowInsets.navigationBars.only(WindowInsetsSides.Horizontal)
.add(WindowInsets.displayCutout.only(WindowInsetsSides.Horizontal))
)
}
BoxWithConstraints(

View File

@@ -13,14 +13,13 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.LocalMinimumInteractiveComponentSize
import androidx.compose.material3.Scaffold
import androidx.compose.material3.ScaffoldDefaults
import androidx.compose.material3.Text
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
@@ -102,11 +101,10 @@ fun AppScaffold(
paneExpansionState: PaneExpansionState = rememberPaneExpansionState(),
paneExpansionDragHandle: (@Composable ThreePaneScaffoldScope.(PaneExpansionState) -> Unit)? = null,
snackbarHost: @Composable () -> Unit = {},
contentWindowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets,
contentWindowInsets: WindowInsets = WindowInsets.systemBars,
animatorFactory: AppScaffoldAnimationStateFactory = AppScaffoldAnimationStateFactory.Default
) {
val isForcedCompact = !LocalInspectionMode.current && !isLargeScreenSupportEnabled()
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
if (isForcedCompact) {
ListAndNavigation(
@@ -229,9 +227,7 @@ fun AppScaffold(
},
paneExpansionDragHandle = paneExpansionDragHandle,
paneExpansionState = paneExpansionState,
modifier = Modifier
.padding(paddingValues)
.consumeWindowInsets(contentWindowInsets)
modifier = Modifier.padding(paddingValues)
)
}
}