mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Make top app bar lift behavior more consistent
This commit is contained in:
		| @@ -38,7 +38,7 @@ fun BrowseLatestScreen( | ||||
|     } | ||||
|  | ||||
|     Scaffold( | ||||
|         topBar = { | ||||
|         topBar = { scrollBehavior -> | ||||
|             BrowseLatestToolbar( | ||||
|                 navigateUp = navigateUp, | ||||
|                 source = presenter.source!!, | ||||
| @@ -46,6 +46,7 @@ fun BrowseLatestScreen( | ||||
|                 onDisplayModeChange = { presenter.displayMode = it }, | ||||
|                 onHelpClick = onHelpClick, | ||||
|                 onWebViewClick = onWebViewClick, | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|     ) { paddingValues -> | ||||
|   | ||||
| @@ -71,7 +71,7 @@ fun BrowseSourceScreen( | ||||
|     } | ||||
|  | ||||
|     Scaffold( | ||||
|         topBar = { | ||||
|         topBar = { scrollBehavior -> | ||||
|             BrowseSourceToolbar( | ||||
|                 state = presenter, | ||||
|                 source = presenter.source!!, | ||||
| @@ -81,6 +81,7 @@ fun BrowseSourceScreen( | ||||
|                 onWebViewClick = onWebViewClick, | ||||
|                 onHelpClick = onHelpClick, | ||||
|                 onSearch = { presenter.search() }, | ||||
|                 scrollBehavior = scrollBehavior, | ||||
|             ) | ||||
|         }, | ||||
|         floatingActionButton = { | ||||
|   | ||||
| @@ -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 -> | ||||
|   | ||||
| @@ -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 -> | ||||
|   | ||||
| @@ -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 -> | ||||
|   | ||||
| @@ -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 | ||||
| @@ -38,11 +37,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 -> | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import androidx.compose.material.icons.outlined.ViewModule | ||||
| 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 | ||||
| @@ -31,6 +32,7 @@ fun BrowseLatestToolbar( | ||||
|     onDisplayModeChange: (LibraryDisplayMode) -> Unit, | ||||
|     onHelpClick: () -> Unit, | ||||
|     onWebViewClick: () -> Unit, | ||||
|     scrollBehavior: TopAppBarScrollBehavior, | ||||
| ) { | ||||
|     AppBar( | ||||
|         navigateUp = navigateUp, | ||||
| @@ -101,5 +103,6 @@ fun BrowseLatestToolbar( | ||||
|                 ) | ||||
|             } | ||||
|         }, | ||||
|         scrollBehavior = scrollBehavior, | ||||
|     ) | ||||
| } | ||||
|   | ||||
| @@ -15,6 +15,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 | ||||
| @@ -47,6 +48,7 @@ fun BrowseSourceToolbar( | ||||
|     onWebViewClick: () -> Unit, | ||||
|     onHelpClick: () -> Unit, | ||||
|     onSearch: () -> Unit, | ||||
|     scrollBehavior: TopAppBarScrollBehavior, | ||||
| ) { | ||||
|     if (state.searchQuery == null) { | ||||
|         BrowseSourceRegularToolbar( | ||||
| @@ -57,6 +59,7 @@ fun BrowseSourceToolbar( | ||||
|             onSearchClick = { state.searchQuery = "" }, | ||||
|             onWebViewClick = onWebViewClick, | ||||
|             onHelpClick = onHelpClick, | ||||
|             scrollBehavior = scrollBehavior, | ||||
|         ) | ||||
|     } else { | ||||
|         BrowseSourceSearchToolbar( | ||||
| @@ -68,6 +71,7 @@ fun BrowseSourceToolbar( | ||||
|             }, | ||||
|             onResetClick = { state.searchQuery = "" }, | ||||
|             onSearchClick = onSearch, | ||||
|             scrollBehavior = scrollBehavior, | ||||
|         ) | ||||
|     } | ||||
| } | ||||
| @@ -81,6 +85,7 @@ fun BrowseSourceRegularToolbar( | ||||
|     onSearchClick: () -> Unit, | ||||
|     onWebViewClick: () -> Unit, | ||||
|     onHelpClick: () -> Unit, | ||||
|     scrollBehavior: TopAppBarScrollBehavior, | ||||
| ) { | ||||
|     AppBar( | ||||
|         navigateUp = navigateUp, | ||||
| @@ -156,6 +161,7 @@ fun BrowseSourceRegularToolbar( | ||||
|                 ) | ||||
|             } | ||||
|         }, | ||||
|         scrollBehavior = scrollBehavior, | ||||
|     ) | ||||
| } | ||||
|  | ||||
| @@ -166,6 +172,7 @@ fun BrowseSourceSearchToolbar( | ||||
|     navigateUp: () -> Unit, | ||||
|     onResetClick: () -> Unit, | ||||
|     onSearchClick: () -> Unit, | ||||
|     scrollBehavior: TopAppBarScrollBehavior, | ||||
| ) { | ||||
|     val focusRequester = remember { FocusRequester() } | ||||
|     AppBar( | ||||
| @@ -197,6 +204,7 @@ fun BrowseSourceSearchToolbar( | ||||
|                 ), | ||||
|             ) | ||||
|         }, | ||||
|         scrollBehavior = scrollBehavior, | ||||
|     ) | ||||
|     LaunchedEffect(Unit) { | ||||
|         // TODO: https://issuetracker.google.com/issues/204502668 | ||||
|   | ||||
| @@ -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 = { | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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), | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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 | ||||
| @@ -37,16 +28,11 @@ fun LibraryScreen( | ||||
|     onClickFilter: () -> Unit, | ||||
|     onClickRefresh: (Category?) -> Boolean, | ||||
| ) { | ||||
|     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( | ||||
|   | ||||
| @@ -210,7 +210,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() } | ||||
|  | ||||
|     val internalOnBackPressed = { | ||||
| @@ -223,8 +222,6 @@ private fun MangaScreenSmallImpl( | ||||
|     BackHandler(onBack = internalOnBackPressed) | ||||
|  | ||||
|     Scaffold( | ||||
|         modifier = Modifier | ||||
|             .padding(insetPadding), | ||||
|         topBar = { | ||||
|             val firstVisibleItemIndex by remember { | ||||
|                 derivedStateOf { chapterListState.firstVisibleItemIndex } | ||||
|   | ||||
| @@ -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 | ||||
| @@ -15,7 +14,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 | ||||
| @@ -47,12 +45,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 -> | ||||
|   | ||||
| @@ -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 | ||||
| @@ -40,11 +39,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 -> | ||||
|   | ||||
| @@ -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 -> | ||||
|   | ||||
| @@ -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 -> | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -19,12 +19,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 = { | ||||
|   | ||||
| @@ -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, | ||||
|     ) | ||||
| } | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user