- (void)clear {
self.keyCode = NJKeyInputFieldEmpty;
- [self.keyDelegate keyInputFieldDidClear:self];
+ if ([self.delegate respondsToSelector:@selector(keyInputFieldDidClear:)])
+ [self.delegate keyInputFieldDidClear:self];
[self resignIfFirstResponder];
}
self.stringValue = [NJKeyInputField stringForKeyCode:keyCode];
}
-- (void)keyDown:(NSEvent *)theEvent {
- if (!theEvent.isARepeat) {
- if ((theEvent.modifierFlags & NSAlternateKeyMask)
- && theEvent.keyCode == 0x33) {
- // Allow Alt+Backspace to clear the field.
+- (void)keyDown:(NSEvent *)event {
+ static const NSUInteger IGNORE = NSAlternateKeyMask | NSCommandKeyMask;
+ if (!event.isARepeat) {
+ if ((event.modifierFlags & IGNORE) && event.keyCode == 0x33) {
+ // Allow Alt/Command+Backspace to clear the field.
self.keyCode = NJKeyInputFieldEmpty;
- [self.keyDelegate keyInputFieldDidClear:self];
- } else if ((theEvent.modifierFlags & NSAlternateKeyMask)
- && theEvent.keyCode == 0x35) {
- // Allow Alt+Escape to cancel.
- ;
- } else {
- self.keyCode = theEvent.keyCode;
- [self.keyDelegate keyInputField:self didChangeKey:_keyCode];
+ if ([self.delegate respondsToSelector:@selector(keyInputFieldDidClear:)])
+ [self.delegate keyInputFieldDidClear:self];
+ } else if (!(event.modifierFlags & IGNORE)) {
+ self.keyCode = event.keyCode;
+ if ([self.delegate respondsToSelector:@selector(keyInputField:didChangeKey:)])
+ [self.delegate keyInputField:self didChangeKey:self.keyCode];
}
[self resignIfFirstResponder];
}
}
-
+
- (void)mouseDown:(NSEvent *)theEvent {
- if (self.acceptsFirstResponder)
+ if (self.window.firstResponder == self)
+ [self.window makeFirstResponder:nil];
+ else if (self.acceptsFirstResponder)
[self.window makeFirstResponder:self];
}
// modifiers are still down.
if (!(theEvent.modifierFlags & NSDeviceIndependentModifierFlagsMask)) {
self.keyCode = theEvent.keyCode;
- [self.keyDelegate keyInputField:self didChangeKey:_keyCode];
+ if ([self.delegate respondsToSelector:@selector(keyInputField:didChangeKey:)])
+ [self.delegate keyInputField:self didChangeKey:_keyCode];
}
}
+- (void)setDelegate:(id<NJKeyInputFieldDelegate, NSTextFieldDelegate>)delegate {
+ [super setDelegate:delegate];
+}
+
+- (id <NJKeyInputFieldDelegate, NSTextFieldDelegate>)delegate {
+ return (id)[super delegate];
+}
+
@end