Merge pull request #2673 from vitorpamplona/claude/fix-chatroom-list-reuse-Wkz10
Fix double padding in two-pane chat layout
This commit is contained in:
+19
-1
@@ -21,16 +21,19 @@
|
|||||||
package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.twopane
|
package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.twopane
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
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.systemBarsPadding
|
import androidx.compose.foundation.layout.systemBarsPadding
|
||||||
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
|
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.rememberCoroutineScope
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import com.google.accompanist.adaptive.FoldAwareConfiguration
|
import com.google.accompanist.adaptive.FoldAwareConfiguration
|
||||||
import com.google.accompanist.adaptive.HorizontalTwoPaneStrategy
|
import com.google.accompanist.adaptive.HorizontalTwoPaneStrategy
|
||||||
import com.google.accompanist.adaptive.TwoPane
|
import com.google.accompanist.adaptive.TwoPane
|
||||||
@@ -38,6 +41,7 @@ import com.google.accompanist.adaptive.calculateDisplayFeatures
|
|||||||
import com.vitorpamplona.amethyst.commons.ui.feeds.FeedContentState
|
import com.vitorpamplona.amethyst.commons.ui.feeds.FeedContentState
|
||||||
import com.vitorpamplona.amethyst.ui.components.getActivity
|
import com.vitorpamplona.amethyst.ui.components.getActivity
|
||||||
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
|
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
|
||||||
|
import com.vitorpamplona.amethyst.ui.layouts.LocalDisappearingScaffoldPadding
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.bottombars.AppBottomBar
|
import com.vitorpamplona.amethyst.ui.navigation.bottombars.AppBottomBar
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
|
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.routes.Route
|
import com.vitorpamplona.amethyst.ui.navigation.routes.Route
|
||||||
@@ -92,7 +96,16 @@ fun MessagesTwoPane(
|
|||||||
) { padding ->
|
) { padding ->
|
||||||
TwoPane(
|
TwoPane(
|
||||||
first = {
|
first = {
|
||||||
Box(Modifier.fillMaxSize().systemBarsPadding(), contentAlignment = Alignment.BottomEnd) {
|
// The chatroom-list pane owns its own TabRow, so it doesn't
|
||||||
|
// need the outer scaffold's top bar to layer over it. Apply
|
||||||
|
// the scaffold padding directly and reset
|
||||||
|
// LocalDisappearingScaffoldPadding to zero so descendants
|
||||||
|
// (e.g. the LazyColumn inside ChatroomListFeedView via
|
||||||
|
// rememberFeedContentPadding) don't add the bar inset a
|
||||||
|
// second time, which would otherwise show up as a gap
|
||||||
|
// between the TabRow and the first list item.
|
||||||
|
CompositionLocalProvider(LocalDisappearingScaffoldPadding provides PaddingValues(0.dp)) {
|
||||||
|
Box(Modifier.fillMaxSize().padding(padding), contentAlignment = Alignment.BottomEnd) {
|
||||||
ChatroomList(
|
ChatroomList(
|
||||||
knownFeedContentState,
|
knownFeedContentState,
|
||||||
newFeedContentState,
|
newFeedContentState,
|
||||||
@@ -104,8 +117,13 @@ fun MessagesTwoPane(
|
|||||||
ChannelFabColumn(nav)
|
ChannelFabColumn(nav)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
second = {
|
second = {
|
||||||
|
// The chat-view pane brings its own DisappearingScaffold
|
||||||
|
// (with its own chat header), so it stays edge-to-edge under
|
||||||
|
// the outer search bar via systemBarsPadding instead of the
|
||||||
|
// scaffold padding.
|
||||||
Box(Modifier.fillMaxSize().systemBarsPadding()) {
|
Box(Modifier.fillMaxSize().systemBarsPadding()) {
|
||||||
twoPaneNav.innerNav.value?.let {
|
twoPaneNav.innerNav.value?.let {
|
||||||
if (it is Route.Room) {
|
if (it is Route.Room) {
|
||||||
|
|||||||
Reference in New Issue
Block a user