From 0d7c42b1bfcf8d22e178a1256d2eca313bdded60 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Sun, 3 Oct 2021 04:43:21 +0200 Subject: [PATCH] Added scroll to all lists --- src/main/kotlin/Branches.kt | 3 +- src/main/kotlin/CommitChanges.kt | 3 +- src/main/kotlin/Diff.kt | 3 +- src/main/kotlin/Log.kt | 9 +++-- src/main/kotlin/Stashes.kt | 3 +- src/main/kotlin/UncommitedChanges.kt | 9 ++++- .../kotlin/components/ScrollableLazyColumn.kt | 35 +++++++++++++++++++ 7 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 src/main/kotlin/components/ScrollableLazyColumn.kt diff --git a/src/main/kotlin/Branches.kt b/src/main/kotlin/Branches.kt index a439a7e..66a430d 100644 --- a/src/main/kotlin/Branches.kt +++ b/src/main/kotlin/Branches.kt @@ -17,6 +17,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import components.ScrollableLazyColumn import extensions.simpleName import org.eclipse.jgit.lib.Ref import theme.headerBackground @@ -46,7 +47,7 @@ fun Branches(gitManager: GitManager) { maxLines = 1, ) - LazyColumn(modifier = Modifier.weight(5f)) { + ScrollableLazyColumn(modifier = Modifier.weight(5f)) { itemsIndexed(branches) { _, branch -> BranchRow( branch = branch, diff --git a/src/main/kotlin/CommitChanges.kt b/src/main/kotlin/CommitChanges.kt index 7b9c968..c6f0943 100644 --- a/src/main/kotlin/CommitChanges.kt +++ b/src/main/kotlin/CommitChanges.kt @@ -28,6 +28,7 @@ import java.net.HttpURLConnection import java.net.URL import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue +import components.ScrollableLazyColumn @Composable fun CommitChanges( @@ -183,7 +184,7 @@ fun rememberNetworkImage(url: String): ImageBitmap { fun CommitLogChanges(diffEntries: List, onDiffSelected: (DiffEntry) -> Unit) { val selectedIndex = remember(diffEntries) { mutableStateOf(-1) } - LazyColumn( + ScrollableLazyColumn( modifier = Modifier .fillMaxSize() ) { diff --git a/src/main/kotlin/Diff.kt b/src/main/kotlin/Diff.kt index 8a98d8a..e998299 100644 --- a/src/main/kotlin/Diff.kt +++ b/src/main/kotlin/Diff.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import components.ScrollableLazyColumn import theme.primaryTextColor @Composable @@ -46,7 +47,7 @@ fun Diff(gitManager: GitManager, diffEntryType: DiffEntryType, onCloseDiffView: Text("Close diff") } SelectionContainer { - LazyColumn( + ScrollableLazyColumn( modifier = Modifier .fillMaxSize() .padding(16.dp) diff --git a/src/main/kotlin/Log.kt b/src/main/kotlin/Log.kt index 26da10c..dd11b9d 100644 --- a/src/main/kotlin/Log.kt +++ b/src/main/kotlin/Log.kt @@ -1,8 +1,11 @@ +import androidx.compose.foundation.VerticalScrollbar import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollbarAdapter import androidx.compose.material.Card import androidx.compose.material.Divider import androidx.compose.material.MaterialTheme @@ -14,6 +17,7 @@ import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import components.ScrollableLazyColumn import extensions.toSmartSystemString import git.LogStatus import org.eclipse.jgit.revwalk.RevCommit @@ -37,6 +41,7 @@ fun Log( } else listOf() + Card( modifier = Modifier .padding(8.dp) @@ -45,10 +50,10 @@ fun Log( ) { val hasUncommitedChanges by gitManager.hasUncommitedChanges.collectAsState() - LazyColumn( + ScrollableLazyColumn( modifier = Modifier .background(MaterialTheme.colors.surface) - .fillMaxSize() + .fillMaxSize(), ) { if (hasUncommitedChanges) diff --git a/src/main/kotlin/Stashes.kt b/src/main/kotlin/Stashes.kt index 55978d5..100ab8c 100644 --- a/src/main/kotlin/Stashes.kt +++ b/src/main/kotlin/Stashes.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import components.ScrollableLazyColumn import git.StashStatus import org.eclipse.jgit.revwalk.RevCommit import theme.headerBackground @@ -50,7 +51,7 @@ fun Stashes(gitManager: GitManager) { maxLines = 1, ) - LazyColumn(modifier = Modifier.weight(5f)) { + ScrollableLazyColumn(modifier = Modifier.weight(5f)) { items(items = stashList) { stash -> StashRow( stash = stash, diff --git a/src/main/kotlin/UncommitedChanges.kt b/src/main/kotlin/UncommitedChanges.kt index 0f57a0d..f67b95c 100644 --- a/src/main/kotlin/UncommitedChanges.kt +++ b/src/main/kotlin/UncommitedChanges.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* import androidx.compose.material.icons.Icons @@ -29,6 +30,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import components.ScrollableLazyColumn import extensions.filePath import extensions.icon import extensions.iconColor @@ -157,6 +159,7 @@ private fun EntriesList( onDiffEntryOptionSelected: (DiffEntry) -> Unit, onReset: (DiffEntry) -> Unit, ) { + Card( modifier = modifier ) { @@ -174,7 +177,9 @@ private fun EntriesList( maxLines = 1, ) - LazyColumn(modifier = Modifier.weight(5f)) { + ScrollableLazyColumn( + modifier = Modifier.fillMaxSize(), + ) { itemsIndexed(diffEntries) { index, diffEntry -> FileEntry( diffEntry = diffEntry, @@ -194,7 +199,9 @@ private fun EntriesList( if (index < diffEntries.size - 1) { Divider(modifier = Modifier.fillMaxWidth()) } + } + } } } diff --git a/src/main/kotlin/components/ScrollableLazyColumn.kt b/src/main/kotlin/components/ScrollableLazyColumn.kt new file mode 100644 index 0000000..01c6c0e --- /dev/null +++ b/src/main/kotlin/components/ScrollableLazyColumn.kt @@ -0,0 +1,35 @@ +package components + +import androidx.compose.foundation.VerticalScrollbar +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollbarAdapter +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier + +@Composable +fun ScrollableLazyColumn( + modifier: Modifier, + content: LazyListScope.() -> Unit +) { + val state = rememberLazyListState() + + Box( + modifier = modifier, + ) { + LazyColumn( + state = state, + content = content + ) + VerticalScrollbar( + modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(), + adapter = rememberScrollbarAdapter( + scrollState = state + ) + ) + } +} \ No newline at end of file