X-Git-Url: https://git.r.bdr.sh/rbdr/captura/blobdiff_plain/7ee43fb83799abb89a69cfcd4e2146dd4eaa5045..9431168da5eb1338d8c9fc8cc92e6245c539e73d:/Captura/Presentation/Windows/RecordingWindow.swift?ds=inline diff --git a/Captura/Presentation/Windows/RecordingWindow.swift b/Captura/Presentation/Windows/RecordingWindow.swift index 370a47a..b5c4413 100644 --- a/Captura/Presentation/Windows/RecordingWindow.swift +++ b/Captura/Presentation/Windows/RecordingWindow.swift @@ -30,9 +30,8 @@ class RecordingWindow: NSWindow { self.titlebarAppearsTransparent = true self.setFrame(boundingBox, display: true) self.titleVisibility = .hidden - let recordingView = RecordingContentView(configuration, frame: boundingBox) + let recordingView = RecordingContentView(configuration, frame: boundingBox, button: button ?? NSZeroRect) recordingView.frame = boundingBox - recordingView.button = button self.contentView = recordingView //self.backgroundColor = NSColor(white: 1.0, alpha: 0.001) self.backgroundColor = NSColor(red: 1.0, green: 0.0, blue: 1.0, alpha: 0.5) @@ -83,11 +82,33 @@ enum RecordingWindowState { class RecordingContentView: NSView { - init(_ configuration: CaptureSessionConfiguration, frame: NSRect) { + init(_ configuration: CaptureSessionConfiguration, frame: NSRect, button: NSRect) { super.init(frame: frame) preventResize = configuration.preventResize preventMove = configuration.preventMove autoStart = configuration.autoStart + self.button = button + + for screen in NSScreen.screens { + print(screen.frame) + // BEFORE YOU WENT TO BED: + // You were checking which screen contains the button, so you can calculate the offset which should give you + // the location of the button, which you can then use to draw the button at the same offset whenever you need + // to change screen! This would keep the behavior of pressing the record button. + // If this does work, remember to then test it with a Hi DPI display, because we might need to adjust for pixel + // density. + // Finally, if it does work, make sure the alternate monitor still responds, by adjusting the behavior of the + // real button + if screen.frame.intersects(button) { + print("CONTAINS! ->") + let relativeX = screen.frame.width - button.maxX + let relativeY = screen.frame.height - button.maxY + print("The rect is at (\(relativeX), \(relativeY)) relative to the top right of the screen frame.") + } else { + print("NO CONTAINS ->") + } + print(button) + } if configuration.x != nil || configuration.y != nil || configuration.width != nil || configuration.height != nil { box = NSRect( @@ -109,6 +130,7 @@ class RecordingContentView: NSView { fatalError("init(coder:) has not been implemented") } + private var buttons: [NSRect] = [] public var button: NSRect? = nil @Published public var box: NSRect? = nil public var state: RecordingWindowState = .idle @@ -454,8 +476,8 @@ class RecordingContentView: NSView { if let currentScreen = self.window?.screen { if currentScreen != screen { let frame = screen?.frame ?? NSZeroRect - self.frame = frame - self.bounds = frame + self.frame = CGRect(origin: NSZeroPoint, size: frame.size) + self.bounds = CGRect(origin: NSZeroPoint, size: frame.size) self.updateTrackingAreas() if let window = self.window {