From 56e0447ae6dc54d4d104057dc5e5e3da6b923a39 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Nicolas <6371790+pynicolas@users.noreply.github.com> Date: Sat, 27 Sep 2025 15:47:32 +0200 Subject: [PATCH] Trigger page reordering on long-press --- .../java/org/fairscan/app/view/PageList.kt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/fairscan/app/view/PageList.kt b/app/src/main/java/org/fairscan/app/view/PageList.kt index 479bfde..73d263f 100644 --- a/app/src/main/java/org/fairscan/app/view/PageList.kt +++ b/app/src/main/java/org/fairscan/app/view/PageList.kt @@ -14,7 +14,6 @@ */ package org.fairscan.app.view -import android.annotation.SuppressLint import android.content.res.Configuration import android.graphics.Bitmap import androidx.compose.foundation.Image @@ -76,10 +75,19 @@ fun CommonPageList( } val content: LazyListScope.() -> Unit = { itemsIndexed(state.document.pageIds, key = { _, item -> item}) { index, item -> - ReorderableItem(reorderableLazyListState, key = item) { _ -> + ReorderableItem(reorderableLazyListState, key = item) { isDragging -> + val borderColor = + if (isDragging) MaterialTheme.colorScheme.primary else Color.Transparent + val modifier = Modifier + .longPressDraggableHandle() + .border( + width = 2.dp, + color = borderColor, + shape = RoundedCornerShape(6.dp) + ) val image = state.document.loadThumbnail(index) if (image != null) { - PageThumbnail(image, index, state, Modifier.draggableHandle()) + PageThumbnail(image, index, state, modifier) } } } @@ -114,7 +122,7 @@ private fun PageThumbnail( image: Bitmap, index: Int, state: CommonPageListState, - @SuppressLint("ModifierParameter") draggableModifier: Modifier, + modifier: Modifier, ) { val bitmap = image.asImageBitmap() val isSelected = index == state.currentPageIndex @@ -130,7 +138,7 @@ private fun PageThumbnail( val density = LocalDensity.current imageModifier = imageModifier.addPositionCallback(state.onLastItemPosition, density, 1.0f) } - Box (modifier = Modifier.height(PAGE_LIST_ELEMENT_SIZE_DP.dp)) { + Box (modifier = modifier.height(PAGE_LIST_ELEMENT_SIZE_DP.dp)) { Image( bitmap = bitmap, contentDescription = null, @@ -141,7 +149,7 @@ private fun PageThumbnail( .clickable { state.onPageClick(index) } ) Box( - modifier = draggableModifier + modifier = Modifier .padding(8.dp) .align(Alignment.BottomCenter) .background(Color.Black.copy(alpha = 0.5f), shape = RoundedCornerShape(4.dp))