From d7c692dca09c70c9109de60e29f21cf8d2bc978f Mon Sep 17 00:00:00 2001 From: Syer10 Date: Fri, 28 May 2021 19:13:52 -0400 Subject: [PATCH] Close a source tab with middle click --- .../kotlin/ca/gosyer/ui/sources/SourcesMenu.kt | 15 +++++++++++---- .../ca/gosyer/ui/sources/SourcesMenuViewModel.kt | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenu.kt b/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenu.kt index b62b919e..71cd537d 100644 --- a/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenu.kt +++ b/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenu.kt @@ -6,7 +6,6 @@ package ca.gosyer.ui.sources -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxHeight @@ -27,6 +26,7 @@ import androidx.compose.ui.unit.dp import ca.gosyer.data.models.Source import ca.gosyer.ui.base.components.KtorImage import ca.gosyer.ui.base.components.Toolbar +import ca.gosyer.ui.base.components.combinedMouseClickable import ca.gosyer.ui.base.vm.viewModel import ca.gosyer.ui.manga.openMangaMenu import ca.gosyer.ui.sources.components.SourceHomeScreen @@ -70,9 +70,16 @@ fun SourcesMenu(bundle: Bundle, onMangaClick: (Long) -> Unit) { LazyColumn(Modifier.fillMaxHeight().width(64.dp)) { items(sourceTabs) { source -> val modifier = Modifier - .clickable { - vm.selectTab(source) - } + .combinedMouseClickable( + onClick = { + vm.selectTab(source) + }, + onMiddleClick = { + if (source != null) { + vm.closeTab(source) + } + } + ) .requiredHeight(64.dp) .requiredWidth(64.dp) diff --git a/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenuViewModel.kt b/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenuViewModel.kt index df1273e8..a1fa5154 100644 --- a/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenuViewModel.kt +++ b/src/main/kotlin/ca/gosyer/ui/sources/SourcesMenuViewModel.kt @@ -107,6 +107,7 @@ class SourcesMenuViewModel @Inject constructor( if (selectedSourceTab.value?.id == source.id) { _selectedSourceTab.value = null } + bundle.remove(source.id.toString()) } private companion object : CKLogger({}) {