Analog mouse scrolling.
[enjoyable.git] / KeyInputTextView.m
index 288d903..91a2a34 100644 (file)
@@ -7,13 +7,13 @@
 
 #import "KeyInputTextView.h"
 
+#import "TargetController.h"
+
 @implementation KeyInputTextView {
     int vk;
     BOOL enabled;
 }
 
-@synthesize descr;
-
 - (id)initWithFrame:(NSRect)frameRect {
     if ((self = [super initWithFrame:frameRect])) {
         self.alignment = NSCenterTextAlignment;
 
 - (void)clear {
     self.vk = -1;
+    [targetController keyChanged];
+    [self resignIfFirstResponder];
 }
 
 - (BOOL)hasKey {
     return self.vk >= 0;
 }
 
-- (NSString *)stringForKeyCode:(int)keycode {
++ (NSString *)stringForKeyCode:(int)keycode {
     switch(keycode) {
         case   -1: return @"";
         case 0x7a: return @"F1";
 }
 
 - (BOOL)acceptsFirstResponder {
-    return enabled;
+    return self.enabled;
 }
 
 - (BOOL)becomeFirstResponder {
     return [super resignFirstResponder];
 }
 
-- (void)setBackgroundColor:(NSColor *)color {
-    [super setBackgroundColor:color];
-}
-
 - (void)setVk:(int)key {
     vk = key;
-    descr = [self stringForKeyCode:key];
-    [self setStringValue:descr];
-    if (self.hasKey)
-        [targetController keyChanged];
+    [self setStringValue:[KeyInputTextView stringForKeyCode:key]];
 }
 
 - (int)vk {
 - (void)keyDown:(NSEvent *)evt {
     if (!evt.isARepeat) {
         self.vk = evt.keyCode;
-        [[self window] makeFirstResponder:nil];
+        [targetController keyChanged];
+        [self resignIfFirstResponder];
     }
 }
 
+- (void)mouseDown:(NSEvent *)theEvent {
+    [targetController keyChanged];
+    [self.window makeFirstResponder:self];
+}
+
 - (void)flagsChanged:(NSEvent *)evt {
     self.vk = evt.keyCode;
-    [[self window] makeFirstResponder:nil];
+    [targetController keyChanged];
+    [self resignIfFirstResponder];
 }
 
 - (void)setEnabled:(BOOL)newEnabled {
     enabled = newEnabled;
 
-    if (!enabled && window.firstResponder == self)
-        [window makeFirstResponder:nil];
+    if (!enabled)
+        [self resignIfFirstResponder];
 }
 
 - (BOOL)enabled {