Connect to several servers, one coloured window each
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user