Summary
In HotKeyRecorderField.handle(_:), after Escape the view correctly calls window?.makeFirstResponder(nil). After a successful hotkey capture, however, the view stays first responder — leaving the recorder in a visually active state when the user expects it to be done.
Fix
After onCapture?(...) is called, add:
window?.makeFirstResponder(nil)
Notes
Consistent with the Escape path — the recorder should resign after any terminal event (cancel or capture).
Summary
In
HotKeyRecorderField.handle(_:), after Escape the view correctly callswindow?.makeFirstResponder(nil). After a successful hotkey capture, however, the view stays first responder — leaving the recorder in a visually active state when the user expects it to be done.Fix
After
onCapture?(...)is called, add:Notes
Consistent with the Escape path — the recorder should resign after any terminal event (cancel or capture).