@@ -18,17 +18,38 @@ import UIKit
1818
1919 override func layoutSubviews( ) {
2020 super. layoutSubviews ( )
21- splitWidget. resizeHandler ? ( )
21+ if !splitWidget. hasCalledResizeHandler {
22+ splitWidget. resizeHandler ? ( )
23+ splitWidget. hasCalledResizeHandler = true
24+ }
2225 }
2326 }
2427
2528 private final class ColumnWidget : ContainerWidget {
29+ let columnView = ColumnView ( )
30+
2631 override func loadView( ) {
27- view = ColumnView ( )
32+ view = columnView
33+ }
34+ }
35+
36+ var resizeHandler : ( ( ) -> Void ) ? {
37+ didSet {
38+ hasCalledResizeHandler = false
39+ }
40+ }
41+
42+ // This is just a flag so that we don't call resizeHandler twice in one pass through the run loop.
43+ var hasCalledResizeHandler = false {
44+ willSet {
45+ if newValue {
46+ DispatchQueue . main. async { [ weak self] in
47+ self ? . hasCalledResizeHandler = false
48+ }
49+ }
2850 }
2951 }
3052
31- var resizeHandler : ( ( ) -> Void ) ?
3253 private let sidebarContainer : ColumnWidget
3354 private let mainContainer : ColumnWidget
3455
@@ -42,8 +63,8 @@ import UIKit
4263 sidebarContainer. parentWidget = self
4364 mainContainer. parentWidget = self
4465 childWidgets = [ sidebarContainer, mainContainer]
45- ( sidebarContainer. view as! ColumnView ) . splitWidget = self
46- ( mainContainer. view as! ColumnView ) . splitWidget = self
66+ sidebarContainer. columnView . splitWidget = self
67+ mainContainer. columnView . splitWidget = self
4768
4869 child. delegate = self
4970
0 commit comments