From 587843d246df102c493e67d0ec687a6872975b44 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Fri, 11 Feb 2022 20:47:20 +0100 Subject: [PATCH] Changed how the diff list is created to improve scrollbar's behavior (used to change its size depending on the scroll position ???) --- src/main/kotlin/app/ui/Diff.kt | 46 ++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/src/main/kotlin/app/ui/Diff.kt b/src/main/kotlin/app/ui/Diff.kt index 1ab2478..75880fe 100644 --- a/src/main/kotlin/app/ui/Diff.kt +++ b/src/main/kotlin/app/ui/Diff.kt @@ -132,7 +132,8 @@ fun SideDiff(entryContent: EntryContent) { when (entryContent) { EntryContent.Binary -> BinaryDiff() is EntryContent.ImageBinary -> ImageDiff(entryContent.tempFilePath) - else -> {} + else -> { + } // is EntryContent.Text -> //TODO maybe have a text view if the file was a binary before? // TODO Show some info about this EntryContent.TooLargeEntry -> TODO() } @@ -162,29 +163,32 @@ fun TextDiff(diffEntryType: DiffEntryType, diffViewModel: DiffViewModel, diffRes val hunks = diffResult.hunks val scrollState by diffViewModel.lazyListState.collectAsState() - ScrollableLazyColumn( - modifier = Modifier - .fillMaxSize(), - state = scrollState - ) { - items(hunks) { hunk -> - HunkHeader( - hunk = hunk, - diffEntryType = diffEntryType, - diffViewModel = diffViewModel, - ) + SelectionContainer { + ScrollableLazyColumn( + modifier = Modifier + .fillMaxSize(), + state = scrollState + ) { - SelectionContainer { - Column { - val oldHighestLineNumber = hunk.lines.maxOf { it.displayOldLineNumber } - val newHighestLineNumber = hunk.lines.maxOf { it.displayNewLineNumber } - val highestLineNumber = max(oldHighestLineNumber, newHighestLineNumber) - val highestLineNumberLength = highestLineNumber.toString().count() - - hunk.lines.forEach { line -> - DiffLine(highestLineNumberLength, line) + for (hunk in hunks) { + item { + DisableSelection { + HunkHeader( + hunk = hunk, + diffEntryType = diffEntryType, + diffViewModel = diffViewModel, + ) } } + + val oldHighestLineNumber = hunk.lines.maxOf { it.displayOldLineNumber } + val newHighestLineNumber = hunk.lines.maxOf { it.displayNewLineNumber } + val highestLineNumber = max(oldHighestLineNumber, newHighestLineNumber) + val highestLineNumberLength = highestLineNumber.toString().count() + + items(hunk.lines) { line -> + DiffLine(highestLineNumberLength, line) + } } } }