From 81253c0f0626f2d5139226c46b6509e1d833cd03 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Mon, 25 Sep 2023 16:44:17 +0200 Subject: [PATCH] Fixed tabs being partially dragged accidentally (instead of clicked) --- .../ui/components/RepositoriesTabPanel.kt | 18 +++++++++++------- .../gitnuro/ui/drag_sorting/RowDragSorting.kt | 7 ++++++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/components/RepositoriesTabPanel.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/components/RepositoriesTabPanel.kt index f0688b2..762dc4c 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/components/RepositoriesTabPanel.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/components/RepositoriesTabPanel.kt @@ -97,19 +97,23 @@ fun RepositoriesTabPanel( modifier = Modifier .height(tabsHeight) .weight(1f, false) - .horizontalDragContainer(dragDropState), + .horizontalDragContainer( + dragDropState = dragDropState, + onDraggedTab = { + val tab = tabs.getOrNull(it) + + if (tab != null) { + onTabSelected(tab) + } + }, + ), state = stateHorizontal, ) { itemsIndexed( items = tabs, key = { _, tab -> tab.tabViewModel } ) { index, tab -> - HorizontalDraggableItem(dragDropState, index) { isDragged -> - LaunchedEffect(isDragged) { - if (isDragged) { - onTabSelected(tab) - } - } + HorizontalDraggableItem(dragDropState, index) { _ -> Tooltip(tab.path) { Tab( modifier = Modifier, diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/drag_sorting/RowDragSorting.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/drag_sorting/RowDragSorting.kt index b5ce81a..e702b9b 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/drag_sorting/RowDragSorting.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/drag_sorting/RowDragSorting.kt @@ -290,7 +290,7 @@ class VerticalDragDropState internal constructor( } @Composable -fun Modifier.horizontalDragContainer(dragDropState: HorizontalDragDropState): Modifier { +fun Modifier.horizontalDragContainer(dragDropState: HorizontalDragDropState, onDraggedTab: (Int) -> Unit): Modifier { val state = rememberDraggableState { println("Dragging horizontally $it") dragDropState.onDrag(Offset(it, 0f)) @@ -302,6 +302,11 @@ fun Modifier.horizontalDragContainer(dragDropState: HorizontalDragDropState): Mo startDragImmediately = false, onDragStarted = { dragDropState.onDragStart(it) + val index = dragDropState.draggingItemIndex + + if (index != null) { + onDraggedTab(index) + } }, onDragStopped = { println("On drag stopped")