Tabs can be now closed using the tertiary button

Fixes #72
This commit is contained in:
Abdelilah El Aissaoui 2023-06-02 01:28:12 +02:00
parent 13ef706f17
commit e79a261b06
No known key found for this signature in database
GPG Key ID: 7587FC860F594869
2 changed files with 21 additions and 1 deletions

View File

@ -110,6 +110,22 @@ fun Modifier.fastClickable(key: Any = Unit, key2: Any = Unit, onClick: () -> Uni
}
}
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun Modifier.onMiddleMouseButtonClick(key: Any = Unit, key2: Any = Unit, onClick: () -> Unit) =
this.pointerInput(key, key2) {
while (true) {
val lastMouseEvent = awaitPointerEventScope { awaitFirstDownEvent() }
val mouseEvent = lastMouseEvent.awtEventOrNull
if (mouseEvent != null) {
if (lastMouseEvent.button.isTertiary) {
onClick()
}
}
}
}
@Composable
private fun Modifier.hoverBackground(): Modifier {
val hoverInteraction = remember { MutableInteractionSource() }

View File

@ -32,6 +32,7 @@ import com.jetpackduba.gitnuro.di.DaggerTabComponent
import com.jetpackduba.gitnuro.di.TabComponent
import com.jetpackduba.gitnuro.extensions.handMouseClickable
import com.jetpackduba.gitnuro.extensions.handOnHover
import com.jetpackduba.gitnuro.extensions.onMiddleMouseButtonClick
import com.jetpackduba.gitnuro.managers.AppStateManager
import com.jetpackduba.gitnuro.viewmodels.TabViewModel
import com.jetpackduba.gitnuro.viewmodels.TabViewModelsHolder
@ -95,7 +96,7 @@ fun RepositoriesTabPanel(
.weight(1f, false),
state = stateHorizontal,
) {
items(items = tabs) { tab ->
items(items = tabs, key = { it.tabViewModel }) { tab ->
Tooltip(tab.path) {
Tab(
title = tab.tabName,
@ -164,6 +165,9 @@ fun Tab(
.fillMaxHeight()
.hoverable(hoverInteraction)
.handMouseClickable { onClick() }
.onMiddleMouseButtonClick {
onCloseTab()
}
.background(backgroundColor),
) {
Row(