- Swap detection: Changed from midpoint check to straddle-target-center detection
* Old: Checks if midpoint of dragged item lies within target
* New: Checks if dragged item spans the midpoint of target
* Prevents oscillation when items have different sizes
- Adjacency filter: Only adjacent items (index ± 1) as swap candidates
* Prevents item jumps during fast drag
* Reduces recalculation of visibleItemsInfo
- Race-condition fix for scroll + move
* draggingItemIndex update moved after onMove() in coroutine block
* Prevents inconsistent state between index update and layout change
Affected files:
- DragDropListState.kt: onDrag() method (~10 lines changed)