mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-04-18 13:30:29 +00:00
macos: window tracking cleans up observers properly
This commit is contained in:
@@ -37,18 +37,29 @@ class WindowObserver: ObservableObject {
|
||||
|
||||
weak var window: NSWindow? {
|
||||
didSet {
|
||||
self.isKeyWindow = window?.isKeyWindow ?? false
|
||||
guard let window = window else {
|
||||
// Always remove our previous observers if we have any
|
||||
if let previous = self.becomeKeyobserver {
|
||||
NotificationCenter.default.removeObserver(previous)
|
||||
self.becomeKeyobserver = nil
|
||||
}
|
||||
if let previous = self.resignKeyobserver {
|
||||
NotificationCenter.default.removeObserver(previous)
|
||||
self.resignKeyobserver = nil
|
||||
}
|
||||
|
||||
// If our window is becoming nil then we clear everything
|
||||
guard let window = window else {
|
||||
self.isKeyWindow = false
|
||||
return
|
||||
}
|
||||
|
||||
self.isKeyWindow = window.isKeyWindow
|
||||
self.becomeKeyobserver = NotificationCenter.default.addObserver(
|
||||
forName: NSWindow.didBecomeKeyNotification,
|
||||
object: window,
|
||||
queue: .main
|
||||
) { (n) in
|
||||
print("KEY WINDOW YES")
|
||||
self.isKeyWindow = true
|
||||
}
|
||||
|
||||
@@ -57,6 +68,7 @@ class WindowObserver: ObservableObject {
|
||||
object: window,
|
||||
queue: .main
|
||||
) { (n) in
|
||||
print("KEY WINDOW RESIGN")
|
||||
self.isKeyWindow = false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user