aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Utility/NSWindowBridge.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Utility/NSWindowBridge.swift')
-rw-r--r--Hotline/Utility/NSWindowBridge.swift25
1 files changed, 25 insertions, 0 deletions
diff --git a/Hotline/Utility/NSWindowBridge.swift b/Hotline/Utility/NSWindowBridge.swift
new file mode 100644
index 0000000..5cd7197
--- /dev/null
+++ b/Hotline/Utility/NSWindowBridge.swift
@@ -0,0 +1,25 @@
+import SwiftUI
+
+fileprivate class NSWindowAccessorView: NSView {
+ let executeBlock: (_ window: NSWindow? ) -> ()
+
+ init(_ inConfigFunction: @escaping (_ window: NSWindow? ) -> () ) {
+ executeBlock = inConfigFunction
+ super.init( frame: NSRect() )
+ }
+
+ required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }
+
+ public override func viewDidMoveToWindow() {
+ super.viewDidMoveToWindow()
+ executeBlock( self.window ) // We pass it through even if it is nil.
+ }
+}
+
+public struct NSWindowAccessor: NSViewRepresentable {
+ var configCode: (_ window: NSWindow? ) -> ()
+
+ public init(_ configCode: @escaping (_: NSWindow?) -> Void) { self.configCode = configCode }
+ public func makeNSView(context: Context) -> NSView { return NSWindowAccessorView( configCode ) }
+ public func updateNSView(_ nsView: NSView, context: Context) {}
+}