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