Let system dialogs take clicks during capture; hint Esc on the overlay
The event tap consumes every click while selecting, which made permission
prompts unclickable when they appeared mid-capture. Clicks now pass
through when a system dialog (SecurityAgent / System Settings) is
frontmost, and the overlay shows a visible Esc hint as an escape hatch.
💘 Generated with Crush
Assisted-by: Crush:deepseek-v4-flash-0731
This commit is contained in:
@@ -57,6 +57,23 @@ final class OverlayView: NSView {
|
||||
NSColor.black.withAlphaComponent(0.35).setFill()
|
||||
NSBezierPath(rect: bounds).fill()
|
||||
|
||||
// Esc hint — the only way out once clicks are consumed by the tap.
|
||||
let hint = "Drag to select · hover + click a window to capture it · Esc to cancel"
|
||||
let hintAttrs: [NSAttributedString.Key: Any] = [
|
||||
.font: NSFont.monospacedSystemFont(ofSize: 12, weight: .medium),
|
||||
.foregroundColor: NSColor.white.withAlphaComponent(0.85),
|
||||
]
|
||||
let hintSize = hint.size(withAttributes: hintAttrs)
|
||||
let hintRect = NSRect(
|
||||
x: (bounds.width - hintSize.width) / 2 - 10,
|
||||
y: bounds.height - 46,
|
||||
width: hintSize.width + 20,
|
||||
height: hintSize.height + 12
|
||||
)
|
||||
NSColor.black.withAlphaComponent(0.65).setFill()
|
||||
NSBezierPath(roundedRect: hintRect, xRadius: 8, yRadius: 8).fill()
|
||||
hint.draw(at: NSPoint(x: hintRect.minX + 10, y: hintRect.minY + 6), withAttributes: hintAttrs)
|
||||
|
||||
guard let controller else { return }
|
||||
|
||||
// Highlight the hovered window (rounded, like real window corners)
|
||||
|
||||
Reference in New Issue
Block a user