refactor: Use modifier instead of contentPadding for ScrollbarLazyColumn to support stickerHeader

This commit is contained in:
Cuong-Tran 2024-06-24 14:44:25 +07:00
parent b491ad4c5f
commit 1d5f906a06
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
4 changed files with 124 additions and 106 deletions

View file

@ -1,7 +1,6 @@
package eu.kanade.presentation.browse package eu.kanade.presentation.browse
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
@ -11,7 +10,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
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 eu.kanade.presentation.browse.components.BaseSourceItem import eu.kanade.presentation.browse.components.BaseSourceItem
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
@ -53,14 +51,8 @@ fun SourcesFilterScreen(
) )
return@Scaffold return@Scaffold
} }
// KMK -->
// Wrap around so we can use sticky header
Column(
modifier = Modifier.padding(contentPadding)
) {
// KMK <--
SourcesFilterContent( SourcesFilterContent(
contentPadding = PaddingValues(Dp.Hairline), contentPadding = contentPadding,
state = state, state = state,
onClickLanguage = onClickLanguage, onClickLanguage = onClickLanguage,
onClickSource = onClickSource, onClickSource = onClickSource,
@ -69,7 +61,6 @@ fun SourcesFilterScreen(
// SY <-- // SY <--
) )
} }
}
} }
@Composable @Composable
@ -83,7 +74,10 @@ private fun SourcesFilterContent(
// SY <-- // SY <--
) { ) {
FastScrollLazyColumn( FastScrollLazyColumn(
contentPadding = contentPadding, // KMK -->
// Using modifier instead of contentPdding so we can use stickyHeader
modifier = Modifier.padding(contentPadding),
// KMK <--
) { ) {
state.items.forEach { (language, sources) -> state.items.forEach { (language, sources) ->
val enabled = language in state.enabledLanguages val enabled = language in state.enabledLanguages

View file

@ -107,6 +107,7 @@ fun SourcesScreen(
) )
// KMK --> // KMK -->
else -> Column( else -> Column(
// Wrap around so we can use stickyHeader
modifier = Modifier.padding(contentPadding), modifier = Modifier.padding(contentPadding),
) { ) {
AnimatedFloatingSearchBox( AnimatedFloatingSearchBox(

View file

@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@ -14,12 +13,9 @@ import androidx.compose.material.icons.automirrored.outlined.Label
import androidx.compose.material.icons.automirrored.outlined.PlaylistAdd import androidx.compose.material.icons.automirrored.outlined.PlaylistAdd
import androidx.compose.material.icons.outlined.CloudOff import androidx.compose.material.icons.outlined.CloudOff
import androidx.compose.material.icons.outlined.GetApp import androidx.compose.material.icons.outlined.GetApp
import androidx.compose.material.icons.outlined.HelpOutline
import androidx.compose.material.icons.outlined.History import androidx.compose.material.icons.outlined.History
import androidx.compose.material.icons.outlined.Info import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.Label
import androidx.compose.material.icons.outlined.NewReleases import androidx.compose.material.icons.outlined.NewReleases
import androidx.compose.material.icons.outlined.PlaylistAdd
import androidx.compose.material.icons.outlined.QueryStats import androidx.compose.material.icons.outlined.QueryStats
import androidx.compose.material.icons.outlined.Settings import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material.icons.outlined.Storage import androidx.compose.material.icons.outlined.Storage
@ -87,7 +83,8 @@ fun MoreScreen(
}, },
) { contentPadding -> ) { contentPadding ->
ScrollbarLazyColumn( ScrollbarLazyColumn(
modifier = Modifier.padding(contentPadding), // KMK: use contentPadding as preferable padding for ScrollbarLazyColumn when not using stickyHeader
contentPadding = contentPadding,
) { ) {
item { item {
LogoHeader() LogoHeader()

View file

@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.manga
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@ -19,6 +18,7 @@ import com.materialkolor.DynamicMaterialTheme
import eu.kanade.domain.ui.UiPreferences import eu.kanade.domain.ui.UiPreferences
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Button import tachiyomi.presentation.core.components.material.Button
import tachiyomi.presentation.core.components.material.ButtonDefaults import tachiyomi.presentation.core.components.material.ButtonDefaults
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
@ -68,9 +68,11 @@ class PaletteScreen(
) )
}, },
) { contentPadding -> ) { contentPadding ->
Column( ScrollbarLazyColumn(
// Using modifier instead of contentPdding so we can use stickyHeader
modifier = Modifier.padding(contentPadding), modifier = Modifier.padding(contentPadding),
) { ) {
item {
ButtonsColor( ButtonsColor(
"seedColor & onPrimary", "seedColor & onPrimary",
seedColor, seedColor,
@ -78,73 +80,96 @@ class PaletteScreen(
seedColor, seedColor,
MaterialTheme.colorScheme.onPrimary, MaterialTheme.colorScheme.onPrimary,
) )
}
item {
ButtonsColor( ButtonsColor(
"primary", "primary",
MaterialTheme.colorScheme.primary, MaterialTheme.colorScheme.primary,
"primaryContainer", "primaryContainer",
MaterialTheme.colorScheme.primaryContainer MaterialTheme.colorScheme.primaryContainer
) )
}
item {
ButtonsColor( ButtonsColor(
"secondary", "secondary",
MaterialTheme.colorScheme.secondary, MaterialTheme.colorScheme.secondary,
"secondaryContainer", "secondaryContainer",
MaterialTheme.colorScheme.secondaryContainer MaterialTheme.colorScheme.secondaryContainer
) )
}
item {
ButtonsColor( ButtonsColor(
"tertiary", "tertiary",
MaterialTheme.colorScheme.tertiary, MaterialTheme.colorScheme.tertiary,
"tertiaryContainer", "tertiaryContainer",
MaterialTheme.colorScheme.tertiaryContainer MaterialTheme.colorScheme.tertiaryContainer
) )
}
item {
ButtonsColor( ButtonsColor(
"surface", "surface",
MaterialTheme.colorScheme.surface, MaterialTheme.colorScheme.surface,
"surfaceVariant", "surfaceVariant",
MaterialTheme.colorScheme.surfaceVariant MaterialTheme.colorScheme.surfaceVariant
) )
}
item {
ButtonsColor( ButtonsColor(
"inverseSurface", "inverseSurface",
MaterialTheme.colorScheme.inverseSurface, MaterialTheme.colorScheme.inverseSurface,
"surfaceTint", "surfaceTint",
MaterialTheme.colorScheme.surfaceTint MaterialTheme.colorScheme.surfaceTint
) )
}
item {
ButtonsColor( ButtonsColor(
"inversePrimary", "inversePrimary",
MaterialTheme.colorScheme.inversePrimary, MaterialTheme.colorScheme.inversePrimary,
"background", "background",
MaterialTheme.colorScheme.background MaterialTheme.colorScheme.background
) )
}
item {
ButtonsColor( ButtonsColor(
"error", "error",
MaterialTheme.colorScheme.error, MaterialTheme.colorScheme.error,
"errorContainer", "errorContainer",
MaterialTheme.colorScheme.errorContainer MaterialTheme.colorScheme.errorContainer
) )
}
item {
ButtonsColor( ButtonsColor(
"outline", "outline",
MaterialTheme.colorScheme.outline, MaterialTheme.colorScheme.outline,
"outlineVariant", "outlineVariant",
MaterialTheme.colorScheme.outlineVariant MaterialTheme.colorScheme.outlineVariant
) )
}
item {
ButtonsColor( ButtonsColor(
"scrim", "scrim",
MaterialTheme.colorScheme.scrim, MaterialTheme.colorScheme.scrim,
"surfaceBright", "surfaceBright",
MaterialTheme.colorScheme.surfaceBright MaterialTheme.colorScheme.surfaceBright
) )
}
item {
ButtonsColor( ButtonsColor(
"surfaceDim", "surfaceDim",
MaterialTheme.colorScheme.surfaceDim, MaterialTheme.colorScheme.surfaceDim,
"surfaceContainer", "surfaceContainer",
MaterialTheme.colorScheme.surfaceContainer MaterialTheme.colorScheme.surfaceContainer
) )
}
item {
ButtonsColor( ButtonsColor(
"surfaceContainerHigh", "surfaceContainerHigh",
MaterialTheme.colorScheme.surfaceContainerHigh, MaterialTheme.colorScheme.surfaceContainerHigh,
"surfaceContainerHighest", "surfaceContainerHighest",
MaterialTheme.colorScheme.surfaceContainerHighest MaterialTheme.colorScheme.surfaceContainerHighest
) )
}
item {
ButtonsColor( ButtonsColor(
"surfaceContainerLow", "surfaceContainerLow",
MaterialTheme.colorScheme.surfaceContainerLow, MaterialTheme.colorScheme.surfaceContainerLow,
@ -154,6 +179,7 @@ class PaletteScreen(
} }
} }
} }
}
} }
@Composable @Composable