Make top app bar lift behavior more consistent

(cherry picked from commit 504844a892635fe9554a3eb907ad328b94ffab29)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/browse/BrowseLatestScreen.kt
#	app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
#	app/src/main/java/eu/kanade/presentation/browse/components/BrowseLatestToolbar.kt
#	app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt
This commit is contained in:
arkon 2022-08-31 16:31:08 -04:00 committed by Jobobby04
parent 57b336b2b8
commit 241517a13a
33 changed files with 97 additions and 135 deletions

View File

@ -42,7 +42,7 @@ fun BrowseLatestScreen(
}
Scaffold(
topBar = {
topBar = { scrollBehavior ->
BrowseLatestToolbar(
navigateUp = navigateUp,
source = presenter.source!!,
@ -53,6 +53,7 @@ fun BrowseLatestScreen(
// SY -->
onSettingsClick = onSettingsClick,
// SY <--
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -48,12 +48,13 @@ fun BrowseMangadexFollowsScreen(
}
Scaffold(
topBar = {
topBar = { scrollBehavior ->
BrowseSourceSimpleToolbar(
title = stringResource(R.string.mangadex_follows),
displayMode = presenter.displayMode,
onDisplayModeChange = onDisplayModeChange,
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
},
snackbarHost = {

View File

@ -38,12 +38,13 @@ fun BrowseRecommendationsScreen(
}
Scaffold(
topBar = {
topBar = { scrollBehavior ->
BrowseSourceSimpleToolbar(
navigateUp = navigateUp,
title = title,
displayMode = presenter.displayMode,
onDisplayModeChange = { presenter.displayMode = it },
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -77,7 +77,7 @@ fun BrowseSourceScreen(
}
Scaffold(
topBar = {
topBar = { scrollBehavior ->
BrowseSourceToolbar(
state = presenter,
source = presenter.source!!,
@ -90,6 +90,7 @@ fun BrowseSourceScreen(
// SY -->
onSettingsClick = onSettingsClick,
// SY <--
scrollBehavior = scrollBehavior,
)
},
floatingActionButton = {

View File

@ -2,7 +2,6 @@ package eu.kanade.presentation.browse
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@ -14,13 +13,13 @@ import eu.kanade.presentation.components.TabContent
@Composable
fun BrowseTabWrapper(tab: TabContent) {
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(tab.titleRes),
actions = {
AppBarActions(tab.actions)
},
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
@ -80,8 +79,7 @@ fun ExtensionDetailsScreen(
val uriHandler = LocalUriHandler.current
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.label_extension_info),
navigateUp = navigateUp,
@ -123,6 +121,7 @@ fun ExtensionDetailsScreen(
},
)
},
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Switch
import androidx.compose.runtime.Composable
@ -32,11 +31,11 @@ fun ExtensionFilterScreen(
) {
val context = LocalContext.current
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.label_extensions),
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@ -34,11 +33,11 @@ fun MigrateMangaScreen(
) {
val context = LocalContext.current
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = title,
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
@ -24,14 +23,11 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
@ -111,13 +107,8 @@ fun SourceFeedScreen(
onClickDelete: (FeedSavedSearch) -> Unit,
onClickManga: (Manga) -> Unit,
) {
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
val insets = WindowInsets.navigationBars.only(WindowInsetsSides.Horizontal)
Scaffold(
modifier = Modifier
.windowInsetsPadding(insets)
.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
topBar = { scrollBehavior ->
SourceFeedToolbar(
title = presenter.source.name,
state = presenter,

View File

@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Checkbox
import androidx.compose.material3.Switch
@ -44,11 +43,11 @@ fun SourcesFilterScreen(
) {
val context = LocalContext.current
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.label_sources),
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -9,6 +9,7 @@ import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -36,6 +37,7 @@ fun BrowseLatestToolbar(
// SY -->
onSettingsClick: () -> Unit,
// SY <--
scrollBehavior: TopAppBarScrollBehavior,
) {
AppBar(
navigateUp = navigateUp,
@ -115,5 +117,6 @@ fun BrowseLatestToolbar(
)
}
},
scrollBehavior = scrollBehavior,
)
}

View File

@ -6,6 +6,7 @@ import androidx.compose.material.icons.outlined.Check
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -24,6 +25,7 @@ fun BrowseSourceSimpleToolbar(
title: String,
displayMode: LibraryDisplayMode?,
onDisplayModeChange: (LibraryDisplayMode) -> Unit,
scrollBehavior: TopAppBarScrollBehavior,
) {
AppBar(
navigateUp = navigateUp,
@ -82,5 +84,6 @@ fun BrowseSourceSimpleToolbar(
)
}
},
scrollBehavior = scrollBehavior,
)
}

View File

@ -16,6 +16,7 @@ import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@ -53,6 +54,7 @@ fun BrowseSourceToolbar(
// SY -->
onSettingsClick: () -> Unit,
// SY <--
scrollBehavior: TopAppBarScrollBehavior,
) {
if (state.searchQuery == null) {
BrowseSourceRegularToolbar(
@ -66,6 +68,7 @@ fun BrowseSourceToolbar(
// SY -->
onSettingsClick = onSettingsClick,
// SY <--
scrollBehavior = scrollBehavior,
)
} else {
BrowseSourceSearchToolbar(
@ -77,6 +80,7 @@ fun BrowseSourceToolbar(
},
onResetClick = { state.searchQuery = "" },
onSearchClick = onSearch,
scrollBehavior = scrollBehavior,
)
}
}
@ -93,6 +97,7 @@ fun BrowseSourceRegularToolbar(
// SY -->
onSettingsClick: () -> Unit,
// SY <--
scrollBehavior: TopAppBarScrollBehavior,
) {
AppBar(
navigateUp = navigateUp,
@ -177,6 +182,7 @@ fun BrowseSourceRegularToolbar(
)
}
},
scrollBehavior = scrollBehavior,
)
}
@ -187,6 +193,7 @@ fun BrowseSourceSearchToolbar(
navigateUp: () -> Unit,
onResetClick: () -> Unit,
onSearchClick: () -> Unit,
scrollBehavior: TopAppBarScrollBehavior,
) {
val focusRequester = remember { FocusRequester() }
AppBar(
@ -218,6 +225,7 @@ fun BrowseSourceSearchToolbar(
),
)
},
scrollBehavior = scrollBehavior,
)
LaunchedEffect(Unit) {
// TODO: https://issuetracker.google.com/issues/204502668

View File

@ -1,11 +1,9 @@
package eu.kanade.presentation.category
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import eu.kanade.presentation.category.components.CategoryContent
@ -33,11 +31,11 @@ fun CategoryScreen(
) {
val lazyListState = rememberLazyListState()
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.action_edit_categories),
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
},
floatingActionButton = {

View File

@ -1,11 +1,9 @@
package eu.kanade.presentation.category
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import eu.kanade.presentation.category.components.CategoryCreateDialog
@ -32,12 +30,11 @@ fun SortTagScreen(
) {
val lazyListState = rememberLazyListState()
Scaffold(
modifier = Modifier
.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
navigateUp = navigateUp,
title = stringResource(R.string.action_edit_tags),
scrollBehavior = scrollBehavior,
)
},
floatingActionButton = {

View File

@ -1,11 +1,9 @@
package eu.kanade.presentation.category
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import eu.kanade.presentation.category.components.CategoryCreateDialog
@ -33,12 +31,11 @@ fun SourceCategoryScreen(
) {
val lazyListState = rememberLazyListState()
Scaffold(
modifier = Modifier
.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
navigateUp = navigateUp,
title = stringResource(R.string.action_edit_categories),
scrollBehavior = scrollBehavior,
)
},
floatingActionButton = {

View File

@ -1,11 +1,9 @@
package eu.kanade.presentation.category
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import eu.kanade.presentation.category.components.CategoryCreateDialog
@ -32,12 +30,11 @@ fun SourceRepoScreen(
) {
val lazyListState = rememberLazyListState()
Scaffold(
modifier = Modifier
.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
navigateUp = navigateUp,
title = stringResource(R.string.action_edit_repos),
scrollBehavior = scrollBehavior,
)
},
floatingActionButton = {

View File

@ -17,6 +17,12 @@
package eu.kanade.presentation.components
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.LocalContentColor
@ -27,13 +33,17 @@ import androidx.compose.material3.Snackbar
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Surface
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.material3.contentColorFor
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.layout.SubcomposeLayout
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.LayoutDirection
@ -81,7 +91,7 @@ import androidx.compose.ui.unit.dp
@Composable
fun Scaffold(
modifier: Modifier = Modifier,
topBar: @Composable () -> Unit = {},
topBar: @Composable (TopAppBarScrollBehavior) -> Unit = {},
bottomBar: @Composable () -> Unit = {},
snackbarHost: @Composable () -> Unit = {},
floatingActionButton: @Composable () -> Unit = {},
@ -90,10 +100,25 @@ fun Scaffold(
contentColor: Color = contentColorFor(containerColor),
content: @Composable (PaddingValues) -> Unit,
) {
Surface(modifier = modifier, color = containerColor, contentColor = contentColor) {
/**
* Tachiyomi: always handle insets and pass scroll behavior to topBar
*/
val insetPaddingValue = WindowInsets.navigationBars
.only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom)
.asPaddingValues()
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
Surface(
modifier = Modifier
.padding(insetPaddingValue)
.nestedScroll(scrollBehavior.nestedScrollConnection)
.then(modifier),
color = containerColor,
contentColor = contentColor,
) {
ScaffoldLayout(
fabPosition = floatingActionButtonPosition,
topBar = topBar,
topBar = { topBar(scrollBehavior) },
bottomBar = bottomBar,
content = content,
snackbar = snackbarHost,

View File

@ -4,7 +4,6 @@ import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material3.Tab
import androidx.compose.material3.TabRow
import androidx.compose.runtime.Composable
@ -33,7 +32,6 @@ fun TabbedScreen(
}
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
AppBar(
title = stringResource(titleRes),

View File

@ -1,23 +1,13 @@
package eu.kanade.presentation.history
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.paging.LoadState
import eu.kanade.domain.history.model.HistoryWithRelations
import eu.kanade.presentation.components.EmptyScreen
import eu.kanade.presentation.components.LoadingScreen
import eu.kanade.presentation.components.Scaffold
import eu.kanade.presentation.history.components.HistoryContent
import eu.kanade.presentation.history.components.HistoryDeleteAllDialog
import eu.kanade.presentation.history.components.HistoryDeleteDialog
@ -38,15 +28,9 @@ fun HistoryScreen(
onClickResume: (HistoryWithRelations) -> Unit,
) {
val context = LocalContext.current
val insetPaddingValue = WindowInsets.navigationBars
.only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom)
.asPaddingValues()
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
Scaffold(
modifier = Modifier
.padding(insetPaddingValue)
.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
topBar = { scrollBehavior ->
HistoryToolbar(
state = presenter,
incognitoMode = presenter.isIncognitoMode,

View File

@ -1,17 +1,8 @@
package eu.kanade.presentation.library
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import eu.kanade.domain.category.model.Category
import eu.kanade.presentation.components.LibraryBottomActionMenu
import eu.kanade.presentation.components.LoadingScreen
@ -45,16 +36,11 @@ fun LibraryScreen(
onOpenReader: (LibraryManga) -> Unit,
// SY <--
) {
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
val insets = WindowInsets.navigationBars.only(WindowInsetsSides.Horizontal)
Crossfade(targetState = presenter.isLoading) { state ->
when (state) {
true -> LoadingScreen()
false -> Scaffold(
modifier = Modifier
.windowInsetsPadding(insets)
.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
topBar = { scrollBehavior ->
val title by presenter.getToolbarTitle()
val tabVisible = presenter.tabVisibility && presenter.categories.size > 1
LibraryToolbar(

View File

@ -253,7 +253,6 @@ private fun MangaScreenSmallImpl(
val layoutDirection = LocalLayoutDirection.current
val chapterListState = rememberLazyListState()
val insetPadding = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal).asPaddingValues()
val chapters = remember(state) { state.processedChapters.toList() }
// SY -->
val metadataSource = remember(state.source.id) { state.source.getMainSource<MetadataSource<*, *>>() }
@ -269,8 +268,6 @@ private fun MangaScreenSmallImpl(
BackHandler(onBack = internalOnBackPressed)
Scaffold(
modifier = Modifier
.padding(insetPadding),
topBar = {
val firstVisibleItemIndex by remember {
derivedStateOf { chapterListState.firstVisibleItemIndex }

View File

@ -3,7 +3,6 @@ package eu.kanade.presentation.more
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.CloudOff
import androidx.compose.material.icons.outlined.GetApp
@ -16,7 +15,6 @@ import androidx.compose.material.icons.outlined.SettingsBackupRestore
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.painterResource
@ -51,12 +49,12 @@ fun MoreScreen(
val downloadQueueState by presenter.downloadQueueState.collectAsState()
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.label_more),
downloadedOnlyMode = presenter.downloadedOnly.value,
incognitoMode = presenter.incognitoMode.value,
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Public
import androidx.compose.runtime.Composable
@ -41,11 +40,11 @@ fun AboutScreen(
val uriHandler = LocalUriHandler.current
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.pref_category_about),
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@ -21,11 +20,11 @@ fun LicensesScreen(
navigateUp: () -> Unit,
) {
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.licenses),
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -4,11 +4,9 @@ import androidx.annotation.StringRes
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Search
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.stringResource
import eu.kanade.presentation.components.AppBar
@ -26,8 +24,7 @@ fun SettingsMainScreen(
onClickSearch: () -> Unit,
) {
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.label_settings),
navigateUp = navigateUp,
@ -42,6 +39,7 @@ fun SettingsMainScreen(
),
)
},
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->

View File

@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@ -39,8 +38,7 @@ fun SettingsSearchScreen(
var query by remember { mutableStateOf("") }
Scaffold(
modifier = Modifier.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
SearchToolbar(
searchQuery = query,
onChangeSearchQuery = {
@ -49,6 +47,7 @@ fun SettingsSearchScreen(
},
onClickCloseSearch = navigateUp,
onClickResetSearch = { query = "" },
scrollBehavior = scrollBehavior,
)
// TODO: search placeholder

View File

@ -18,12 +18,13 @@ fun ClearDatabaseScreen(
) {
val context = LocalContext.current
Scaffold(
topBar = {
topBar = { scrollBehavior ->
ClearDatabaseToolbar(
state = presenter,
navigateUp = navigateUp,
onClickSelectAll = { presenter.selectAll() },
onClickInvertSelection = { presenter.invertSelection() },
scrollBehavior = scrollBehavior,
)
},
floatingActionButton = {

View File

@ -3,6 +3,7 @@ package eu.kanade.presentation.more.settings.database.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.FlipToBack
import androidx.compose.material.icons.outlined.SelectAll
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import eu.kanade.presentation.components.AppBar
@ -16,6 +17,7 @@ fun ClearDatabaseToolbar(
navigateUp: () -> Unit,
onClickSelectAll: () -> Unit,
onClickInvertSelection: () -> Unit,
scrollBehavior: TopAppBarScrollBehavior,
) {
AppBar(
title = stringResource(R.string.pref_clear_database),
@ -38,5 +40,6 @@ fun ClearDatabaseToolbar(
)
}
},
scrollBehavior = scrollBehavior,
)
}

View File

@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.FlipToBack
@ -18,9 +17,7 @@ import androidx.compose.material.icons.filled.Refresh
import androidx.compose.material.icons.filled.SelectAll
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@ -29,7 +26,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.res.stringResource
@ -67,9 +63,6 @@ fun UpdateScreen(
onDownloadChapter: (List<UpdatesItem>, ChapterDownloadAction) -> Unit,
) {
val updatesListState = rememberLazyListState()
val insetPaddingValue = WindowInsets.navigationBars
.only(WindowInsetsSides.Horizontal)
.asPaddingValues()
val internalOnBackPressed = {
if (presenter.selectionMode) {
@ -88,12 +81,8 @@ fun UpdateScreen(
started
}
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
Scaffold(
modifier = Modifier
.padding(insetPaddingValue)
.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
topBar = { scrollBehavior ->
UpdatesAppBar(
incognitoMode = presenter.isIncognitoMode,
downloadedOnlyMode = presenter.isDownloadOnly,

View File

@ -20,7 +20,6 @@ import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.windowInsetsBottomHeight
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.selection.SelectionContainer
@ -29,8 +28,6 @@ import androidx.compose.material3.AlertDialog
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -41,7 +38,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
@ -72,8 +68,6 @@ class SettingsDebugController : BasicFullComposeController() {
@Composable
override fun ComposeContent() {
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
val insets = WindowInsets.navigationBars.only(WindowInsetsSides.Horizontal)
val functions by produceState<List<Pair<KFunction<*>, String>>?>(initialValue = null) {
value = withContext(Dispatchers.Default) {
DebugFunctions::class.declaredFunctions.filter {
@ -91,10 +85,7 @@ class SettingsDebugController : BasicFullComposeController() {
}
}
Scaffold(
modifier = Modifier
.windowInsetsPadding(insets)
.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = "DEBUG MENU",
scrollBehavior = scrollBehavior,

View File

@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.UTurnRight
@ -16,6 +15,7 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.Slider
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
@ -53,15 +53,14 @@ fun PagePreviewScreen(
navigateUp: () -> Unit,
) {
Scaffold(
modifier = Modifier
.statusBarsPadding(),
topBar = {
topBar = { scrollBehavior ->
PagePreviewTopAppBar(
navigateUp = navigateUp,
title = stringResource(R.string.page_previews),
onOpenPageDialog = onOpenPageDialog,
showOpenPageDialog = state is PagePreviewState.Success &&
(state.pageCount != null && state.pageCount > 1 /* TODO support unknown pageCount || state.hasNextPage*/),
scrollBehavior = scrollBehavior,
)
},
) { paddingValues ->
@ -171,6 +170,7 @@ fun PagePreviewTopAppBar(
title: String,
onOpenPageDialog: () -> Unit,
showOpenPageDialog: Boolean,
scrollBehavior: TopAppBarScrollBehavior,
) {
AppBar(
title = title,
@ -185,5 +185,6 @@ fun PagePreviewTopAppBar(
}
},
navigateUp = navigateUp,
scrollBehavior = scrollBehavior,
)
}

View File

@ -56,10 +56,11 @@ class InterceptActivity : BaseActivity() {
@Composable
private fun InterceptActivityContent(status: InterceptResult) {
Scaffold(
topBar = {
topBar = { scrollBehavior ->
AppBar(
title = stringResource(R.string.app_name),
navigateUp = ::onBackPressed,
scrollBehavior = scrollBehavior,
)
},
) {