Skip to content

Commit 59048f9

Browse files
committed
fix: defer window resize to avoid reentrant layout
1 parent 50e36a3 commit 59048f9

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

TablePro/Views/Settings/SettingsWindowResizer.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ struct SettingsWindowResizer: NSViewRepresentable {
2121
guard let window = nsView.window else { return }
2222
let newFrameSize = window.frameRect(forContentRect: NSRect(origin: .zero, size: size)).size
2323
guard window.frame.size != newFrameSize else { return }
24-
var frame = window.frame
25-
frame.origin.y += frame.size.height - newFrameSize.height
26-
frame.size = newFrameSize
27-
window.setFrame(frame, display: true, animate: window.isVisible)
24+
// Defer to next run loop tick to avoid reentrant layout during SwiftUI rendering
25+
DispatchQueue.main.async {
26+
var frame = window.frame
27+
frame.origin.y += frame.size.height - newFrameSize.height
28+
frame.size = newFrameSize
29+
window.setFrame(frame, display: true, animate: window.isVisible)
30+
}
2831
}
2932
}
3033

0 commit comments

Comments
 (0)