Skip to content

Commit 767c042

Browse files
committed
Replace scrollbar library
1 parent 56108ac commit 767c042

File tree

6 files changed

+38
-27
lines changed

6 files changed

+38
-27
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ dependencies {
110110
implementation(libs.androidx.compose.materialIconsCore)
111111

112112
implementation(libs.composeGrid)
113-
implementation(libs.fastscroller)
114113
implementation(libs.timber)
115114
implementation(libs.serialization.json.okio)
115+
implementation(libs.lazycolumnscrollbar)
116116

117117
debugImplementation(libs.leakcanary)
118118
debugImplementation(libs.androidx.compose.uiTooling)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// SPDX-FileCopyrightText: 2017-2025 Alexey Rochev <[email protected]>
2+
//
3+
// SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
package org.equeim.tremotesf.ui.components
6+
7+
import androidx.compose.foundation.layout.padding
8+
import androidx.compose.foundation.lazy.LazyListState
9+
import androidx.compose.material3.MaterialTheme
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.runtime.remember
12+
import androidx.compose.ui.Modifier
13+
import my.nanihadesuka.compose.InternalLazyColumnScrollbar
14+
import my.nanihadesuka.compose.ScrollbarSettings
15+
import org.equeim.tremotesf.ui.Dimens
16+
17+
@Composable
18+
fun TremotesfLazyColumnScrollBar(state: LazyListState, modifier: Modifier = Modifier) {
19+
val primaryColor = MaterialTheme.colorScheme.primary
20+
val settings = remember(primaryColor) {
21+
ScrollbarSettings.Default.copy(
22+
thumbSelectedColor = primaryColor,
23+
thumbUnselectedColor = primaryColor.copy(alpha = 0.6f)
24+
)
25+
}
26+
InternalLazyColumnScrollbar(
27+
state = state,
28+
settings = settings,
29+
modifier = modifier.padding(vertical = Dimens.SpacingSmall)
30+
)
31+
}

app/src/main/kotlin/org/equeim/tremotesf/ui/components/TremotesfTorrentFilesList.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.Column
1212
import androidx.compose.foundation.layout.PaddingValues
1313
import androidx.compose.foundation.layout.calculateEndPadding
1414
import androidx.compose.foundation.layout.calculateStartPadding
15-
import androidx.compose.foundation.layout.fillMaxHeight
1615
import androidx.compose.foundation.layout.padding
1716
import androidx.compose.foundation.lazy.LazyColumn
1817
import androidx.compose.foundation.lazy.LazyListState
@@ -53,9 +52,6 @@ import androidx.compose.ui.state.ToggleableState
5352
import androidx.compose.ui.text.input.ImeAction
5453
import androidx.compose.ui.text.style.TextOverflow
5554
import androidx.lifecycle.compose.collectAsStateWithLifecycle
56-
import io.github.oikvpqya.compose.fastscroller.VerticalScrollbar
57-
import io.github.oikvpqya.compose.fastscroller.material3.defaultMaterialScrollbarStyle
58-
import io.github.oikvpqya.compose.fastscroller.rememberScrollbarAdapter
5955
import kotlinx.coroutines.CoroutineScope
6056
import kotlinx.coroutines.channels.Channel
6157
import kotlinx.coroutines.flow.drop
@@ -216,14 +212,7 @@ fun TremotesfTorrentsFilesList(
216212
}
217213
}
218214

219-
VerticalScrollbar(
220-
adapter = rememberScrollbarAdapter(listState),
221-
style = defaultMaterialScrollbarStyle(),
222-
modifier = Modifier
223-
.align(Alignment.TopEnd)
224-
.padding(contentPadding)
225-
.fillMaxHeight()
226-
)
215+
TremotesfLazyColumnScrollBar(listState, Modifier.padding(contentPadding))
227216

228217
SelectionPanel(
229218
selectionState = selectionState,

app/src/main/kotlin/org/equeim/tremotesf/ui/torrentslistfragment/TorrentsList.kt

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.PaddingValues
1414
import androidx.compose.foundation.layout.Row
1515
import androidx.compose.foundation.layout.calculateEndPadding
1616
import androidx.compose.foundation.layout.calculateStartPadding
17-
import androidx.compose.foundation.layout.fillMaxHeight
1817
import androidx.compose.foundation.layout.fillMaxSize
1918
import androidx.compose.foundation.layout.fillMaxWidth
2019
import androidx.compose.foundation.layout.heightIn
@@ -63,9 +62,6 @@ import androidx.compose.ui.tooling.preview.Preview
6362
import androidx.compose.ui.tooling.preview.PreviewParameter
6463
import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
6564
import androidx.compose.ui.unit.dp
66-
import io.github.oikvpqya.compose.fastscroller.VerticalScrollbar
67-
import io.github.oikvpqya.compose.fastscroller.material3.defaultMaterialScrollbarStyle
68-
import io.github.oikvpqya.compose.fastscroller.rememberScrollbarAdapter
6965
import kotlinx.coroutines.flow.Flow
7066
import kotlinx.coroutines.flow.combine
7167
import kotlinx.coroutines.flow.drop
@@ -89,6 +85,7 @@ import org.equeim.tremotesf.ui.TorrentRenameDialog
8985
import org.equeim.tremotesf.ui.TorrentsRemoveDialog
9086
import org.equeim.tremotesf.ui.components.TremotesfIconButtonWithTooltip
9187
import org.equeim.tremotesf.ui.components.TremotesfIconButtonWithTooltipAndMenu
88+
import org.equeim.tremotesf.ui.components.TremotesfLazyColumnScrollBar
9289
import org.equeim.tremotesf.ui.components.TremotesfMultiSelectionPanel
9390
import org.equeim.tremotesf.ui.components.TremotesfMultiSelectionState
9491
import org.equeim.tremotesf.ui.components.TremotesfPlaceholderText
@@ -190,14 +187,7 @@ fun TorrentsList(
190187
)
191188
}
192189

193-
VerticalScrollbar(
194-
adapter = rememberScrollbarAdapter(listState),
195-
style = defaultMaterialScrollbarStyle(),
196-
modifier = Modifier
197-
.align(Alignment.TopEnd)
198-
.padding(innerPadding)
199-
.fillMaxHeight()
200-
)
190+
TremotesfLazyColumnScrollBar(listState, Modifier.padding(innerPadding))
201191

202192
SelectionPanel(
203193
selectionState = selectionState,

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ androidx-window = "1.4.0"
2828
androidx-work = "2.10.2"
2929

3030
composeGrid = "2.3.1"
31-
fastscroller = "0.3.2"
3231
leakcanary = "2.14"
3332
timber = "5.0.1"
33+
lazycolumnscrollbar = "2.2.0"
3434

3535
okhttp = "4.12.0"
3636

@@ -73,9 +73,9 @@ androidx-window = { module = "androidx.window:window", version.ref = "androidx-w
7373
androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "androidx-work" }
7474

7575
composeGrid = { module = "com.cheonjaeung.compose.grid:grid", version.ref = "composeGrid" }
76-
fastscroller = { module = "io.github.oikvpqya.compose.fastscroller:fastscroller-material3", version.ref = "fastscroller" }
7776
leakcanary = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" }
7877
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
78+
lazycolumnscrollbar = { module = "com.github.nanihadesuka:LazyColumnScrollbar", version.ref = "lazycolumnscrollbar" }
7979

8080
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
8181
okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" }

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ dependencyResolutionManagement {
1414
repositories {
1515
mavenCentral()
1616
google()
17+
maven("https://jitpack.io")
1718
}
1819
}
1920

0 commit comments

Comments
 (0)