@@ -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