-
Notifications
You must be signed in to change notification settings - Fork 42
Description
Description:
Using the Reorderable library (sh.calvin.reorderable:reorderable) in a LazyVerticalGrid with clickable image items completely blocks both onClick and onDoubleClick callbacks from combinedClickable , even when using longPressDraggableHandle() and proper Modifier ordering.
Reproduction Steps
1. Create LazyVerticalGrid with detectReorder() modifier
2. Use ReorderableItem for grid items containing Images
3. Apply combinedClickable on Box before .longPressDraggableHandle()
4. Try tapping or double-tapping items
Expected: Tap → onClick , Double-tap → onDoubleClick , Long-press → drag reorder
Actual: No click/doubleClick callbacks fire at all, only drag works
Code Sample
ReorderableItem(reorderableState, key = image.id) { isDragging ->
Box(
modifier = Modifier
.aspectRatio(1f)
.combinedClickable( // NEVER FIRED
onClick = { /* blocked */ },
onDoubleClick = { /* blocked */ }
)
.longPressDraggableHandle(onDragStarted = { /* works */ })
// ... other modifiers
) {
Image(/* image */)
}
}
Attempts Made (All Failed)
• combinedClickable before/after longPressDraggableHandle()
• Shared MutableInteractionSource between both modifiers
• detectReorderAfterLongPress() instead of detectReorder()
• Custom pointerInput with manual gesture detection
The library appears to aggressively consume all pointer input on the entire item area, making it impossible to have clickable content alongside reordering in grids.
Environment:
• Jetpack Compose: 1.6.x+
• Target: API 34+
• Device: Pixel 8 (real device testing)
Could you please investigate if there’s a configuration that allows both clickable items AND drag reordering, or confirm this is a known limitation? Happy to provide full reproducible sample if needed.