Only refocus key input for empty/key targets.
[enjoyable.git] / TargetController.m
index 9f85fd9..14f81a9 100644 (file)
@@ -5,6 +5,21 @@
 //  Created by Sam McCall on 5/05/09.
 //
 
+#import "TargetController.h"
+
+#import "ConfigsController.h"
+#import "Config.h"
+#import "JSAction.h"
+#import "JoystickController.h"
+#import "KeyInputTextView.h"
+#import "TargetConfig.h"
+#import "TargetController.h"
+#import "TargetKeyboard.h"
+#import "TargetMouseBtn.h"
+#import "TargetMouseMove.h"
+#import "TargetMouseScroll.h"
+#import "TargetToggleMouseScope.h"
+
 @implementation TargetController
 
 -(void) keyChanged {
                case 0: // none
                        return NULL;
                case 1: // key
-                       if([keyInput hasKey]) {
+                       if(keyInput.hasKey) {
                                TargetKeyboard* k = [[TargetKeyboard alloc] init];
                                [k setVk: [keyInput vk]];
-                               [k setDescr: [keyInput descr]];
                                return k;
                        }
                        break;
 }
 
 -(void) commit {
-       id action = [joystickController selectedAction];
-       if(action) {
-               Target* target = [self state];
-               [[configsController currentConfig] setTarget: target forAction: action];
+       JSAction *action = [joystickController selectedAction];
+       if (action) {
+        configsController.currentConfig[action] = self.state;
        }
 }
 
        } else {
                [self setEnabled: YES];
        }
-       Target* target = [[configsController currentConfig] getTargetForAction: jsaction];
+       Target* target = configsController.currentConfig[jsaction];
        
        id act = jsaction;
        NSString* actFullName = [act name];
 }
 
 -(void) focusKey {
-       [[[NSApplication sharedApplication] mainWindow] makeFirstResponder: keyInput];
+    Target *currentTarget = configsController.currentConfig[currentJsaction];
+    if (!currentTarget || [currentTarget isKindOfClass:[TargetKeyboard class]])
+        [[[NSApplication sharedApplication] mainWindow] makeFirstResponder: keyInput];
+    else
+        [keyInput resignFirstResponder];
 }
 
 -(void) refreshConfigsPreservingSelection: (BOOL) preserve  {