Support magic @Application token for automatic mapping names. Fall back to the bundle...
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Wed, 6 Mar 2013 14:12:07 +0000 (15:12 +0100)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Wed, 6 Mar 2013 14:12:07 +0000 (15:12 +0100)
EnjoyableApplicationDelegate.m
NJMappingsController.m

index 1406115..2478b4e 100644 (file)
 @implementation EnjoyableApplicationDelegate
 
 - (void)didSwitchApplication:(NSNotification *)note {
 @implementation EnjoyableApplicationDelegate
 
 - (void)didSwitchApplication:(NSNotification *)note {
-    NSRunningApplication *currentApp = note.userInfo[NSWorkspaceApplicationKey];
-    [self.mappingsController activateMappingForProcess:currentApp.localizedName];
+    NSRunningApplication *activeApp = note.userInfo[NSWorkspaceApplicationKey];
+    NSString *name = activeApp.localizedName;
+    if (!name)
+        name = activeApp.bundleIdentifier;
+    if (name && ![name isEqualToString:NSRunningApplication.currentApplication.localizedName])
+        [self.mappingsController activateMappingForProcess:name];
 }
 
 - (void)applicationDidFinishLaunching:(NSNotification *)notification {
 }
 
 - (void)applicationDidFinishLaunching:(NSNotification *)notification {
index 43f6282..567f233 100644 (file)
                                             count:len];
 }
 
                                             count:len];
 }
 
-
 - (void)activateMappingForProcess:(NSString *)processName {
 - (void)activateMappingForProcess:(NSString *)processName {
-    NJMapping *oldMapping = manualMapping;
-    NJMapping *newMapping = self[processName];
-    if (!newMapping)
-        newMapping = oldMapping;
-    if (newMapping != _currentMapping)
-        [self activateMapping:newMapping];
-    manualMapping = oldMapping;
+    if ([manualMapping.name.lowercaseString isEqualToString:@"@application"]) {
+        manualMapping.name = processName;
+        [self mappingsChanged];
+    } else {
+        NJMapping *oldMapping = manualMapping;
+        NJMapping *newMapping = self[processName];
+        if (!newMapping)
+            newMapping = oldMapping;
+        if (newMapping != _currentMapping)
+            [self activateMapping:newMapping];
+        manualMapping = oldMapping;
+    }
 }
 
 - (void)activateMapping:(NJMapping *)mapping {
 }
 
 - (void)activateMapping:(NJMapping *)mapping {