Fixed tabs scrollbar handling clicks when it isn't visible

This commit is contained in:
Abdelilah El Aissaoui 2022-11-01 01:18:12 +01:00
parent 76cfcb69d8
commit 113ff9339f

View File

@ -58,6 +58,26 @@ fun RepositoriesTabPanel(
} }
} }
val canBeScrolled by remember {
derivedStateOf {
val layoutInfo = stateHorizontal.layoutInfo
val visibleItemsInfo = layoutInfo.visibleItemsInfo
if (layoutInfo.totalItemsCount == 0) {
false
} else {
val firstVisibleItem = visibleItemsInfo.first()
val lastVisibleItem = visibleItemsInfo.last()
val viewportHeight = layoutInfo.viewportEndOffset + layoutInfo.viewportStartOffset
!(firstVisibleItem.index == 0 &&
firstVisibleItem.offset == 0 &&
lastVisibleItem.index + 1 == layoutInfo.totalItemsCount &&
lastVisibleItem.offset + lastVisibleItem.size <= viewportHeight)
}
}
}
Row { Row {
Box( Box(
@ -99,15 +119,17 @@ fun RepositoriesTabPanel(
} }
} }
Tooltip( if (canBeScrolled) {
"\"Shift + Mouse wheel\" to scroll" Tooltip(
) { "\"Shift + Mouse wheel\" to scroll"
HorizontalScrollbar( ) {
modifier = Modifier HorizontalScrollbar(
.align(Alignment.TopStart) modifier = Modifier
.width((tabs.count() * 180).dp), .align(Alignment.TopStart)
adapter = rememberScrollbarAdapter(stateHorizontal) .width((tabs.count() * 180).dp),
) adapter = rememberScrollbarAdapter(stateHorizontal)
)
}
} }
} }