Only refocus key input for empty/key targets.
[enjoyable.git] / TargetController.m
index 3442a61..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;
                case 2:
                {
                        TargetConfig* c = [[TargetConfig alloc] init];
-                       [c setConfig: [[configsController configs] objectAtIndex: [configPopup indexOfSelectedItem]]];
+                       [c setConfig: [configsController configs][[configPopup indexOfSelectedItem]]];
                        return c;
                }
         case 3: {
 }
 
 -(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  {
        NSArray* configs = [configsController configs];
        [configPopup removeAllItems];
        for(int i=0; i<[configs count]; i++) {
-               [configPopup addItemWithTitle: [[configs objectAtIndex:i]name]];
+               [configPopup addItemWithTitle: [configs[i]name]];
        }
        if(preserve)
                [configPopup selectItemAtIndex:initialIndex];