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

View file

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

View file

@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.windowInsetsPadding
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.outlined.CloudOff
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.Info
import androidx.compose.material.icons.outlined.Label
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.Settings
import androidx.compose.material.icons.outlined.Storage
@ -87,7 +83,8 @@ fun MoreScreen(
},
) { contentPadding ->
ScrollbarLazyColumn(
modifier = Modifier.padding(contentPadding),
// KMK: use contentPadding as preferable padding for ScrollbarLazyColumn when not using stickyHeader
contentPadding = contentPadding,
) {
item {
LogoHeader()

View file

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