Connect to several servers, one coloured window each

This commit is contained in:
Ian Gulliver
2026-10-18 20:58:56 -07:00
parent c0b2f38584
commit 4347d4e9e4
15 changed files with 456 additions and 209 deletions
+8 -2
View File
@@ -57,6 +57,7 @@ final class Overlays {
@ObservationIgnored var pickerFrame: CGRect = .zero
@ObservationIgnored var menuHover = false
var paneFrame: CGRect = .zero
@ObservationIgnored weak var window: NSWindow?
@ObservationIgnored private var monitor: Any?
@ObservationIgnored private var mouseMonitor: Any?
@@ -134,17 +135,22 @@ final class Overlays {
return
}
monitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { [weak self] event in
let win = event.window.map(ObjectIdentifier.init)
let code = event.keyCode
let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
let chars = event.charactersIgnoringModifiers ?? ""
let taken = MainActor.assumeIsolated {
self?.key(code, flags, chars, ctrl) ?? false
guard let self, let window = self.window, win == ObjectIdentifier(window) else {
return false
}
return self.key(code, flags, chars, ctrl)
}
return taken ? nil : event
}
mouseMonitor = NSEvent.addLocalMonitorForEvents(matching: [.leftMouseDown, .rightMouseDown, .otherMouseDown]) { [weak self] event in
let win = event.window.map(ObjectIdentifier.init)
MainActor.assumeIsolated {
if let self, self.menu != nil, !self.menuHover {
if let self, let window = self.window, win == ObjectIdentifier(window), self.menu != nil, !self.menuHover {
self.menu = nil
}
}