@@ -1725,13 +1725,23 @@ public final class AppKitBackend: AppBackend {
17251725 return SIMD2 ( x: Int ( size. width) , y: Int ( size. height) )
17261726 }
17271727
1728- public func showSheet( _ sheet: NSCustomSheet , window : NSCustomWindow ) {
1728+ public func showSheet( _ sheet: NSCustomSheet , sheetParent : Any ) {
17291729 // Critical sheets stack. beginSheet only shows a nested sheet
17301730 // after its parent gets dismissed.
1731+ let window = sheetParent as! NSCustomWindow
17311732 window. beginCriticalSheet ( sheet)
1733+ window. managedAttachedSheet = sheet
17321734 }
17331735
1734- public func dismissSheet( _ sheet: NSCustomSheet , window: NSCustomWindow ) {
1736+ public func dismissSheet( _ sheet: NSCustomSheet , sheetParent: Any ) {
1737+ let window = sheetParent as! NSCustomWindow
1738+
1739+ if let nestedSheet = sheet. managedAttachedSheet {
1740+ dismissSheet ( nestedSheet, sheetParent: sheet)
1741+ }
1742+
1743+ defer { window. managedAttachedSheet = nil }
1744+
17351745 window. endSheet ( sheet)
17361746 }
17371747
@@ -2218,6 +2228,8 @@ public class NSCustomWindow: NSWindow {
22182228 var customDelegate = Delegate ( )
22192229 var persistentUndoManager = UndoManager ( )
22202230
2231+ var managedAttachedSheet : NSCustomSheet ?
2232+
22212233 /// Allows the backing scale factor to be overridden. Useful for keeping
22222234 /// UI tests consistent across devices.
22232235 ///
0 commit comments