Skip to content

Commit 90f2733

Browse files
committed
[JEWEL-553] Updating TabStrip style
- Updated TabStrip to use ScrollableContainer - Updated ScrollableContainer to allow setting the position of scrollbar - Updated TabStrip scrollbar theme on LaF + Stand-alone - Updated TabStrip implementation to properly handle different style based on the hover state
1 parent 5ae7b48 commit 90f2733

File tree

10 files changed

+462
-102
lines changed

10 files changed

+462
-102
lines changed

platform/jewel/ide-laf-bridge/src/main/kotlin/org/jetbrains/jewel/bridge/theme/IntUiBridgeScrollbar.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,27 @@ internal fun readScrollbarStyle(isDark: Boolean): ScrollbarStyle =
3333
scrollbarVisibility = readScrollbarVisibility(),
3434
)
3535

36+
internal fun readTabStripScrollbarStyle(isDark: Boolean): ScrollbarStyle =
37+
ScrollbarStyle(
38+
colors = readScrollbarColors(isDark),
39+
metrics = readScrollbarMetrics(),
40+
trackClickBehavior = TrackClickBehavior.JumpToSpot,
41+
scrollbarVisibility =
42+
ScrollbarVisibility.AlwaysVisible(
43+
trackThickness = 5.dp,
44+
trackThicknessExpanded = 5.dp,
45+
trackPadding = PaddingValues(1.dp),
46+
trackPaddingExpanded = PaddingValues(),
47+
trackPaddingWithBorder = PaddingValues(1.dp),
48+
trackColorAnimationDuration = 125.milliseconds,
49+
expandAnimationDuration = 125.milliseconds,
50+
thumbColorAnimationDuration = 125.milliseconds,
51+
lingerDuration = 700.milliseconds,
52+
scrollbarBackgroundColorLight = Color.Unspecified,
53+
scrollbarBackgroundColorDark = Color.Unspecified,
54+
),
55+
)
56+
3657
private fun readScrollbarColors(isDark: Boolean) =
3758
if (hostOs.isMacOS) {
3859
readScrollbarMacColors(isDark)

platform/jewel/ide-laf-bridge/src/main/kotlin/org/jetbrains/jewel/bridge/theme/IntUiBridgeTab.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ internal fun readDefaultTabStyle(): TabStyle {
6868
contentHovered = 1f,
6969
contentSelected = 1f,
7070
),
71-
scrollbarStyle = readScrollbarStyle(isDark),
71+
scrollbarStyle = readTabStripScrollbarStyle(isDark),
7272
)
7373
}
7474

@@ -122,6 +122,6 @@ internal fun readEditorTabStyle(): TabStyle {
122122
contentHovered = 1f,
123123
contentSelected = 1f,
124124
),
125-
scrollbarStyle = readScrollbarStyle(isDark),
125+
scrollbarStyle = readTabStripScrollbarStyle(isDark),
126126
)
127127
}

platform/jewel/int-ui/int-ui-standalone/api-dump.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,8 @@ f:org.jetbrains.jewel.intui.standalone.styling.IntUiScrollbarStylingKt
441441
- bs:macOsLight$default(org.jetbrains.jewel.ui.component.styling.ScrollbarStyle$Companion,org.jetbrains.jewel.ui.component.styling.ScrollbarColors,org.jetbrains.jewel.ui.component.styling.ScrollbarMetrics,org.jetbrains.jewel.ui.component.styling.TrackClickBehavior,org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility,I,java.lang.Object):org.jetbrains.jewel.ui.component.styling.ScrollbarStyle
442442
- sf:macOsLight-zwkVjRg(org.jetbrains.jewel.ui.component.styling.ScrollbarColors$Companion,J,J,J,J,J,J,J,J,J,J,J,J):org.jetbrains.jewel.ui.component.styling.ScrollbarColors
443443
- bs:macOsLight-zwkVjRg$default(org.jetbrains.jewel.ui.component.styling.ScrollbarColors$Companion,J,J,J,J,J,J,J,J,J,J,J,J,I,java.lang.Object):org.jetbrains.jewel.ui.component.styling.ScrollbarColors
444+
- sf:tabStrip-FbBwQsc(org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$Companion,F,F,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.PaddingValues,J,J,J,J):org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility
445+
- bs:tabStrip-FbBwQsc$default(org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$Companion,F,F,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.PaddingValues,J,J,J,J,I,java.lang.Object):org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility
444446
- sf:windowsAndLinux-TZvXluI(org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$WhenScrolling$Companion,F,F,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.PaddingValues,J,J,J,J):org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$WhenScrolling
445447
- bs:windowsAndLinux-TZvXluI$default(org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$WhenScrolling$Companion,F,F,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.PaddingValues,J,J,J,J,I,java.lang.Object):org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$WhenScrolling
446448
- sf:windowsAndLinux-tYhzLtE(org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$AlwaysVisible$Companion,F,androidx.compose.foundation.layout.PaddingValues,J,J):org.jetbrains.jewel.ui.component.styling.ScrollbarVisibility$AlwaysVisible

platform/jewel/int-ui/int-ui-standalone/src/main/kotlin/org/jetbrains/jewel/intui/standalone/styling/IntUiScrollbarStyling.kt

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ public fun AlwaysVisible.Companion.macOs(
395395
*/
396396
public fun AlwaysVisible.Companion.windowsAndLinux(
397397
trackThickness: Dp = 10.dp,
398-
trackPadding: PaddingValues = PaddingValues(0.dp),
398+
trackPadding: PaddingValues = PaddingValues(),
399399
thumbColorAnimationDuration: Duration = 330.milliseconds,
400400
trackColorAnimationDuration: Duration = thumbColorAnimationDuration,
401401
): AlwaysVisible =
@@ -508,8 +508,8 @@ public fun WhenScrolling.Companion.macOs(
508508
public fun WhenScrolling.Companion.windowsAndLinux(
509509
trackThickness: Dp = 10.dp,
510510
trackThicknessExpanded: Dp = 10.dp,
511-
trackPadding: PaddingValues = PaddingValues(0.dp),
512-
trackPaddingWithBorder: PaddingValues = PaddingValues(0.dp),
511+
trackPadding: PaddingValues = PaddingValues(),
512+
trackPaddingWithBorder: PaddingValues = PaddingValues(),
513513
trackColorAnimationDuration: Duration = 330.milliseconds,
514514
expandAnimationDuration: Duration = 0.milliseconds,
515515
thumbColorAnimationDuration: Duration = trackColorAnimationDuration,
@@ -525,3 +525,28 @@ public fun WhenScrolling.Companion.windowsAndLinux(
525525
thumbColorAnimationDuration = thumbColorAnimationDuration,
526526
lingerDuration = lingerDuration,
527527
)
528+
529+
public fun ScrollbarVisibility.Companion.tabStrip(
530+
trackThickness: Dp = 5.dp,
531+
trackThicknessExpanded: Dp = 5.dp,
532+
trackPadding: PaddingValues = PaddingValues(1.dp),
533+
trackPaddingExpanded: PaddingValues = PaddingValues(),
534+
trackPaddingWithBorder: PaddingValues = PaddingValues(1.dp),
535+
trackColorAnimationDuration: Duration = 125.milliseconds,
536+
expandAnimationDuration: Duration = trackColorAnimationDuration,
537+
thumbColorAnimationDuration: Duration = trackColorAnimationDuration,
538+
lingerDuration: Duration = 700.milliseconds,
539+
): ScrollbarVisibility =
540+
AlwaysVisible(
541+
trackThickness = trackThickness,
542+
trackThicknessExpanded = trackThicknessExpanded,
543+
trackPadding = trackPadding,
544+
trackPaddingExpanded = trackPaddingExpanded,
545+
trackPaddingWithBorder = trackPaddingWithBorder,
546+
trackColorAnimationDuration = trackColorAnimationDuration,
547+
expandAnimationDuration = expandAnimationDuration,
548+
thumbColorAnimationDuration = thumbColorAnimationDuration,
549+
lingerDuration = lingerDuration,
550+
scrollbarBackgroundColorLight = Color.Unspecified,
551+
scrollbarBackgroundColorDark = Color.Unspecified,
552+
)

platform/jewel/int-ui/int-ui-standalone/src/main/kotlin/org/jetbrains/jewel/intui/standalone/styling/IntUiTabStripScrollbarStyling.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public fun ScrollbarStyle.Companion.tabStripMacOsLight(
3131
colors: ScrollbarColors = ScrollbarColors.macOsLight(),
3232
metrics: ScrollbarMetrics = ScrollbarMetrics.tabStripMacOs(),
3333
trackClickBehavior: TrackClickBehavior = TrackClickBehavior.NextPage,
34-
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.WhenScrolling.default(),
34+
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.tabStrip(),
3535
): ScrollbarStyle =
3636
ScrollbarStyle(
3737
colors = colors,
@@ -44,7 +44,7 @@ public fun ScrollbarStyle.Companion.tabStripMacOsDark(
4444
colors: ScrollbarColors = ScrollbarColors.macOsDark(),
4545
metrics: ScrollbarMetrics = ScrollbarMetrics.tabStripMacOs(),
4646
trackClickBehavior: TrackClickBehavior = TrackClickBehavior.NextPage,
47-
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.WhenScrolling.default(),
47+
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.tabStrip(),
4848
): ScrollbarStyle =
4949
ScrollbarStyle(
5050
colors = colors,
@@ -57,7 +57,7 @@ public fun ScrollbarStyle.Companion.tabStripWindowsAndLinuxLight(
5757
colors: ScrollbarColors = ScrollbarColors.windowsAndLinuxLight(),
5858
metrics: ScrollbarMetrics = ScrollbarMetrics.tabStripWindowsAndLinux(),
5959
trackClickBehavior: TrackClickBehavior = TrackClickBehavior.JumpToSpot,
60-
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.AlwaysVisible.tabStrip(),
60+
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.tabStrip(),
6161
): ScrollbarStyle =
6262
ScrollbarStyle(
6363
colors = colors,
@@ -70,7 +70,7 @@ public fun ScrollbarStyle.Companion.tabStripWindowsAndLinuxDark(
7070
colors: ScrollbarColors = ScrollbarColors.windowsAndLinuxDark(),
7171
metrics: ScrollbarMetrics = ScrollbarMetrics.tabStripWindowsAndLinux(),
7272
trackClickBehavior: TrackClickBehavior = TrackClickBehavior.JumpToSpot,
73-
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.AlwaysVisible.tabStrip(),
73+
scrollbarVisibility: ScrollbarVisibility = ScrollbarVisibility.tabStrip(),
7474
): ScrollbarStyle =
7575
ScrollbarStyle(
7676
colors = colors,
@@ -89,6 +89,16 @@ public fun ScrollbarMetrics.Companion.tabStripWindowsAndLinux(
8989
minThumbLength: Dp = 20.dp,
9090
): ScrollbarMetrics = ScrollbarMetrics(thumbCornerSize, minThumbLength)
9191

92+
@Deprecated(
93+
"Replace with 'ScrollbarVisibility.tabStrip()' version",
94+
ReplaceWith(
95+
"ScrollbarVisibility.tabStrip(" +
96+
"trackThickness = trackThickness," +
97+
"trackPadding = trackPadding," +
98+
"trackPaddingWithBorder = trackPaddingWithBorder" +
99+
")"
100+
),
101+
)
92102
public fun ScrollbarVisibility.AlwaysVisible.Companion.tabStrip(
93103
trackThickness: Dp = 4.dp,
94104
trackPadding: PaddingValues = PaddingValues(),

0 commit comments

Comments
 (0)