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

View File

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