From 61c467f8265cb0a7dd318aff8a2d0470a3d9a317 Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:12:29 +0000 Subject: [PATCH] fix viewport fill padding and key cover art requests on both refs --- .../com/subtracks/ui/components/Components.kt | 2 +- .../subtracks/ui/components/ViewportFill.kt | 22 +++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/app/src/main/kotlin/com/subtracks/ui/components/Components.kt b/app/src/main/kotlin/com/subtracks/ui/components/Components.kt index 029684ab..1af9c881 100644 --- a/app/src/main/kotlin/com/subtracks/ui/components/Components.kt +++ b/app/src/main/kotlin/com/subtracks/ui/components/Components.kt @@ -46,7 +46,7 @@ fun CoverArt( } if (ref != null) { AsyncImage( - model = remember(ref) { imageRequest(context, ref, crossfade = thumbnailRef != null) }, + model = remember(ref, thumbnailRef) { imageRequest(context, ref, crossfade = thumbnailRef != null) }, contentDescription = null, contentScale = ContentScale.Crop, modifier = Modifier.fillMaxSize(), diff --git a/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt b/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt index b01c09f3..4f2785f6 100644 --- a/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt +++ b/app/src/main/kotlin/com/subtracks/ui/components/ViewportFill.kt @@ -18,15 +18,12 @@ fun rememberViewportFill(state: LazyListState): Dp { derivedStateOf { val info = state.layoutInfo val realCount = info.totalItemsCount - 1 - if (realCount <= 0) { + val visibleReal = info.visibleItemsInfo.filter { it.index < realCount } + if (realCount <= 0 || visibleReal.size < realCount) { FILL_EPSILON_PX } else { - val visibleReal = info.visibleItemsInfo.filter { it.index < realCount } - if (visibleReal.size < realCount) { - FILL_EPSILON_PX - } else { - (info.viewportSize.height - visibleReal.sumOf { it.size }).coerceAtLeast(0) + FILL_EPSILON_PX - } + val contentBottom = visibleReal.maxOf { it.offset + it.size } + (info.viewportSize.height - info.afterContentPadding - contentBottom).coerceAtLeast(0) + FILL_EPSILON_PX } } } @@ -40,15 +37,12 @@ fun rememberViewportFill(state: LazyGridState): Dp { derivedStateOf { val info = state.layoutInfo val realCount = info.totalItemsCount - 1 - if (realCount <= 0) { + val visibleReal = info.visibleItemsInfo.filter { it.index < realCount } + if (realCount <= 0 || visibleReal.size < realCount) { FILL_EPSILON_PX } else { - val visibleReal = info.visibleItemsInfo.filter { it.index < realCount } - if (visibleReal.size < realCount) { - FILL_EPSILON_PX - } else { - (info.viewportSize.height - visibleReal.sumOf { it.size.height }).coerceAtLeast(0) + FILL_EPSILON_PX - } + val contentBottom = visibleReal.maxOf { it.offset.y + it.size.height } + (info.viewportSize.height - info.afterContentPadding - contentBottom).coerceAtLeast(0) + FILL_EPSILON_PX } } }