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 {
Box(
@ -99,15 +119,17 @@ fun RepositoriesTabPanel(
}
}
Tooltip(
"\"Shift + Mouse wheel\" to scroll"
) {
HorizontalScrollbar(
modifier = Modifier
.align(Alignment.TopStart)
.width((tabs.count() * 180).dp),
adapter = rememberScrollbarAdapter(stateHorizontal)
)
if (canBeScrolled) {
Tooltip(
"\"Shift + Mouse wheel\" to scroll"
) {
HorizontalScrollbar(
modifier = Modifier
.align(Alignment.TopStart)
.width((tabs.count() * 180).dp),
adapter = rememberScrollbarAdapter(stateHorizontal)
)
}
}
}