BugFix: Hide Notch from Screen Recordings

This commit is contained in:
Hariharan Mudaliar 2025-11-26 15:48:07 +05:30
commit 18f68f56ea
18 changed files with 105 additions and 211 deletions

View file

@ -60,9 +60,12 @@ class ClipboardWindowManager: ObservableObject {
window.contentView = hostingView
// Handle window closing
window.delegate = WindowDelegate { [weak self] in
window.delegate = WindowDelegate { [weak self] window in
ScreenCaptureVisibilityManager.shared.unregister(window)
self?.clipboardWindow = nil
}
ScreenCaptureVisibilityManager.shared.register(window, scope: .panelsOnly)
self.clipboardWindow = window
window.makeKeyAndOrderFront(nil)
@ -88,21 +91,17 @@ class ClipboardWindowManager: ObservableObject {
}
private class WindowDelegate: NSObject, NSWindowDelegate {
private let onClose: () -> Void
init(onClose: @escaping () -> Void) {
private let onClose: (NSWindow) -> Void
init(onClose: @escaping (NSWindow) -> Void) {
self.onClose = onClose
super.init()
}
func windowWillClose(_ notification: Notification) {
onClose()
}
func windowShouldClose(_ sender: NSWindow) -> Bool {
// Hide instead of close when user clicks close button
sender.orderOut(nil)
onClose()
onClose(sender)
return false
}
}

View file

@ -70,6 +70,8 @@ class LockScreenLiveActivityWindowManager {
window.alphaValue = 0
window.animationBehavior = .none
ScreenCaptureVisibilityManager.shared.register(window, scope: .entireInterface)
self.window = window
self.hasDelegated = false
return window

View file

@ -81,6 +81,8 @@ class LockScreenPanelManager {
newWindow.isMovable = false
newWindow.hasShadow = false
ScreenCaptureVisibilityManager.shared.register(newWindow, scope: .entireInterface)
panelWindow = newWindow
window = newWindow
hasDelegated = false

View file

@ -70,6 +70,8 @@ final class LockScreenReminderWidgetPanelManager {
newWindow.level = NSWindow.Level(rawValue: Int(CGShieldingWindowLevel()))
newWindow.collectionBehavior = [.canJoinAllSpaces, .stationary, .fullScreenAuxiliary]
ScreenCaptureVisibilityManager.shared.register(newWindow, scope: .entireInterface)
window = newWindow
if !hasDelegated {
SkyLightOperator.shared.delegateWindow(newWindow)

View file

@ -78,6 +78,8 @@ final class LockScreenWeatherPanelManager {
newWindow.level = NSWindow.Level(rawValue: Int(CGShieldingWindowLevel()))
newWindow.collectionBehavior = [.canJoinAllSpaces, .stationary, .fullScreenAuxiliary]
ScreenCaptureVisibilityManager.shared.register(newWindow, scope: .entireInterface)
window = newWindow
if !hasDelegated {
SkyLightOperator.shared.delegateWindow(newWindow)

View file

@ -166,6 +166,8 @@ final class MusicControlWindowManager {
window.isMovable = false
window.alphaValue = 0
ScreenCaptureVisibilityManager.shared.register(window, scope: .entireInterface)
self.window = window
self.hasDelegated = false
return window

View file

@ -145,6 +145,8 @@ final class TimerControlWindowManager {
window.isMovable = false
window.alphaValue = 0
ScreenCaptureVisibilityManager.shared.register(window, scope: .entireInterface)
self.window = window
self.hasDelegated = false
return window