X-Git-Url: https://git.yukkurigames.com/?a=blobdiff_plain;f=Classes%2FNJKeyInputField.m;h=f4525e5b2b0e3f7f3b25fc5c603b60373c957aa2;hb=8a7999648d97e3040d2ac820b612265f8a07c92f;hp=ec081505c13ce92a28b411617d7ac2c479d16aec;hpb=0064c1fbff36795885a9724081af2a17d83c20a3;p=enjoyable.git diff --git a/Classes/NJKeyInputField.m b/Classes/NJKeyInputField.m index ec08150..f4525e5 100644 --- a/Classes/NJKeyInputField.m +++ b/Classes/NJKeyInputField.m @@ -14,15 +14,16 @@ CGKeyCode NJKeyInputFieldEmpty = 0xFFFF; - (id)initWithFrame:(NSRect)frameRect { if ((self = [super initWithFrame:frameRect])) { self.alignment = NSCenterTextAlignment; - [self setEditable:NO]; - [self setSelectable:NO]; + self.editable = NO; + self.selectable = NO; } return self; } - (void)clear { self.keyCode = NJKeyInputFieldEmpty; - [self.keyDelegate keyInputFieldDidClear:self]; + if ([self.delegate respondsToSelector:@selector(keyInputFieldDidClear:)]) + [self.delegate keyInputFieldDidClear:self]; [self resignIfFirstResponder]; } @@ -173,27 +174,27 @@ CGKeyCode NJKeyInputFieldEmpty = 0xFFFF; 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]; } @@ -206,8 +207,17 @@ CGKeyCode NJKeyInputFieldEmpty = 0xFFFF; // 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)delegate { + [super setDelegate:delegate]; +} + +- (id )delegate { + return (id)[super delegate]; +} + @end