mirror of
https://github.com/writeas/writefreely-swiftui-multiplatform.git
synced 2024-11-15 01:11:02 +00:00
Override app delegate methods for window deminiaturization
This commit is contained in:
parent
18e69277a0
commit
163e44311b
@ -2,6 +2,7 @@ import Cocoa
|
|||||||
import Sparkle
|
import Sparkle
|
||||||
|
|
||||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
|
|
||||||
func applicationWillFinishLaunching(_ notification: Notification) {
|
func applicationWillFinishLaunching(_ notification: Notification) {
|
||||||
// Check UserDefaults for values; if the key doesn't exist (e.g., if MacUpdatesView hasn't ever been shown),
|
// Check UserDefaults for values; if the key doesn't exist (e.g., if MacUpdatesView hasn't ever been shown),
|
||||||
// bool(forKey:) returns false, so set SUUpdater.shared() appropriately.
|
// bool(forKey:) returns false, so set SUUpdater.shared() appropriately.
|
||||||
@ -21,4 +22,40 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
SUUpdater.shared()?.checkForUpdatesInBackground()
|
SUUpdater.shared()?.checkForUpdatesInBackground()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Window handling when miniaturized into app icon on the Dock
|
||||||
|
// Credit to Henry Cooper (pillboxer) on GitHub:
|
||||||
|
// https://github.com/tact/beta-bugs/issues/31#issuecomment-855914705
|
||||||
|
|
||||||
|
// If the window is currently minimized into the Dock, de-miniaturize it (note that if it's minimized
|
||||||
|
// and the user uses OPT+TAB to switch to it, it will be de-miniaturized and brought to the foreground).
|
||||||
|
func applicationDidBecomeActive(_ notification: Notification) {
|
||||||
|
print("💬 Fired:", #function)
|
||||||
|
if let window = NSApp.windows.first {
|
||||||
|
window.deminiaturize(nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we're miniaturizing the window, deactivate it as well by activating Finder.app (note that
|
||||||
|
// this will bring any Finder windows that are behind other apps to the foreground).
|
||||||
|
func applicationDidChangeOcclusionState(_ notification: Notification) {
|
||||||
|
print("💬 Fired:", #function)
|
||||||
|
if let window = NSApp.windows.first, window.isMiniaturized {
|
||||||
|
NSWorkspace.shared.runningApplications.first(where: {
|
||||||
|
$0.activationPolicy == .regular
|
||||||
|
})?.activate(options: .activateAllWindows)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lazy var windows = NSWindow()
|
||||||
|
func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
|
||||||
|
print("💬 Fired:", #function)
|
||||||
|
if !flag {
|
||||||
|
for window in sender.windows {
|
||||||
|
window.makeKeyAndOrderFront(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user