Skip to content

Commit 6532df9

Browse files
committed
Fix ScrollView layout
1 parent 2b0abd3 commit 6532df9

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

Sources/SwiftCrossUI/Views/ScrollView.swift

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,23 @@ public struct ScrollView<Content: View>: TypeSafeView, View {
7272
let minimumWidth: Int
7373
let minimumHeight: Int
7474
if axes.contains(.horizontal) {
75-
scrollViewWidth = proposedSize.x
75+
scrollViewWidth = max(proposedSize.x, verticalScrollBarWidth)
7676
minimumWidth = verticalScrollBarWidth
7777
} else {
78-
scrollViewWidth = contentSize.size.x + verticalScrollBarWidth
78+
scrollViewWidth = max(
79+
contentSize.size.x,
80+
contentSize.minimumWidth + verticalScrollBarWidth
81+
)
7982
minimumWidth = contentSize.minimumWidth + verticalScrollBarWidth
8083
}
8184
if axes.contains(.vertical) {
82-
scrollViewHeight = proposedSize.y
85+
scrollViewHeight = max(proposedSize.y, horizontalScrollBarHeight)
8386
minimumHeight = horizontalScrollBarHeight
8487
} else {
85-
scrollViewHeight = contentSize.size.y + horizontalScrollBarHeight
88+
scrollViewHeight = max(
89+
contentSize.size.y,
90+
contentSize.minimumHeight + horizontalScrollBarHeight
91+
)
8692
minimumHeight = contentSize.minimumHeight + horizontalScrollBarHeight
8793
}
8894

@@ -93,8 +99,10 @@ public struct ScrollView<Content: View>: TypeSafeView, View {
9399

94100
if !dryRun {
95101
let proposedContentSize = SIMD2(
96-
hasHorizontalScrollBar ? contentSize.idealSize.x : contentSize.size.x,
97-
hasVerticalScrollBar ? contentSize.idealSize.y : contentSize.size.y
102+
hasHorizontalScrollBar
103+
? contentSize.idealSize.x : (contentSize.size.x - verticalScrollBarWidth),
104+
hasVerticalScrollBar
105+
? contentSize.idealSize.y : (contentSize.size.y - horizontalScrollBarHeight)
98106
)
99107

100108
let finalContentSize = children.child.update(

0 commit comments

Comments
 (0)