|
@@ -8,11 +8,28 @@ import Cocoa
|
|
|
@main
|
|
@main
|
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
|
|
|
|
|
|
|
|
+ private weak var mainWindowController: MainWindowController?
|
|
|
|
|
+
|
|
|
func applicationDidFinishLaunching(_ notification: Notification) {
|
|
func applicationDidFinishLaunching(_ notification: Notification) {
|
|
|
|
|
+ resolveMainWindowController()
|
|
|
configureMainWindow()
|
|
configureMainWindow()
|
|
|
NSApp.activate(ignoringOtherApps: true)
|
|
NSApp.activate(ignoringOtherApps: true)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
|
|
|
|
|
+ false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
|
|
|
|
|
+ if !flag {
|
|
|
|
|
+ resolveMainWindowController()
|
|
|
|
|
+ mainWindowController?.showWindow(self)
|
|
|
|
|
+ mainWindowController?.window?.makeKeyAndOrderFront(self)
|
|
|
|
|
+ NSApp.activate(ignoringOtherApps: true)
|
|
|
|
|
+ }
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
func applicationShouldRestoreApplicationState(_ app: NSApplication) -> Bool {
|
|
func applicationShouldRestoreApplicationState(_ app: NSApplication) -> Bool {
|
|
|
false
|
|
false
|
|
|
}
|
|
}
|
|
@@ -58,11 +75,24 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private var mainWindow: NSWindow? {
|
|
private var mainWindow: NSWindow? {
|
|
|
- NSApplication.shared.mainWindow
|
|
|
|
|
- ?? NSApplication.shared.keyWindow
|
|
|
|
|
|
|
+ mainWindowController?.window
|
|
|
?? NSApplication.shared.windows.first(where: \.canBecomeMain)
|
|
?? NSApplication.shared.windows.first(where: \.canBecomeMain)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private func resolveMainWindowController() {
|
|
|
|
|
+ guard mainWindowController == nil else { return }
|
|
|
|
|
+
|
|
|
|
|
+ mainWindowController = NSApplication.shared.windows
|
|
|
|
|
+ .compactMap { $0.windowController as? MainWindowController }
|
|
|
|
|
+ .first
|
|
|
|
|
+
|
|
|
|
|
+ if mainWindowController == nil {
|
|
|
|
|
+ DispatchQueue.main.async { [weak self] in
|
|
|
|
|
+ self?.resolveMainWindowController()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
|
|
func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
|
|
|
true
|
|
true
|
|
|
}
|
|
}
|