From eb5fee1ad2f3fc55e6c5f9e59ba37b4811131689 Mon Sep 17 00:00:00 2001 From: gabriel20xx Date: Sun, 26 Oct 2025 14:35:38 +0100 Subject: [PATCH] fix: adjust drag-and-drop logic in ListsScreen and ManageColumnsDialog to correctly map Lazy positions to data indices --- .../com/collabtable/app/ui/screens/ListDetailScreen.kt | 8 +++++--- .../java/com/collabtable/app/ui/screens/ListsScreen.kt | 7 +++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt index 09ed15d..e2c72ee 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt @@ -2527,8 +2527,10 @@ fun ManageColumnsDialog( val reorderState = rememberReorderableLazyListState( onMove = { from, to -> - // Use the same semantics as on the Lists screen for consistency - reorderedFields.move(from.index, to.index) + // Map from Lazy positions (including dividers) to data indices + val fromData = from.index / 2 + val toData = to.index / 2 + reorderedFields.move(fromData, toData) }, ) @@ -2539,7 +2541,7 @@ fun ManageColumnsDialog( .fillMaxWidth() .reorderable(reorderState), state = reorderState.listState, - contentPadding = PaddingValues(horizontal = 8.dp, vertical = 16.dp), + contentPadding = PaddingValues(vertical = 16.dp), verticalArrangement = Arrangement.spacedBy(0.dp), ) { // Interleave dividers as separate Lazy items so dividers don't move with dragged rows diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt index a91e7ae..7a6e054 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListsScreen.kt @@ -179,7 +179,10 @@ fun ListsScreen( onMove = { from, to -> dragging = true val newList = working.toMutableList() - newList.move(from.index, to.index) + // Map from Lazy positions (including dividers) to data indices + val fromData = from.index / 2 + val toData = to.index / 2 + newList.move(fromData, toData) working = newList }, onDragEnd = { _, _ -> @@ -194,7 +197,7 @@ fun ListsScreen( .fillMaxSize() .reorderable(reorderState), state = reorderState.listState, - contentPadding = PaddingValues(horizontal = 8.dp, vertical = 8.dp), + contentPadding = PaddingValues(vertical = 8.dp), verticalArrangement = Arrangement.spacedBy(0.dp), ) { // Interleave dividers as separate list items so they don't move with dragged rows