Fix several cases where the UI did not properly reflect model changes.
[enjoyable.git] / Classes / NJMappingsController.m
index 8f0492c..760b41b 100644 (file)
@@ -11,8 +11,6 @@
 #import "NJOutput.h"
 #import "NJEvents.h"
 
-#define PB_ROW @"com.yukkurigames.Enjoyable.MappingRow"
-
 @implementation NJMappingsController {
     NSMutableArray *_mappings;
     NJMapping *_manualMapping;
@@ -95,7 +93,7 @@
     NSLog(@"Switching to mapping %@.", mapping.name);
     _manualMapping = mapping;
     _currentMapping = mapping;
-    NSUInteger idx = [_mappings indexOfObjectIdenticalTo:_currentMapping];
+    NSUInteger idx = [self indexOfMapping:_currentMapping];
     [NSNotificationCenter.defaultCenter
          postNotificationName:NJEventMappingChanged
                        object:self
     NSArray *storedMappings = [NSUserDefaults.standardUserDefaults arrayForKey:@"mappings"];
     NSMutableArray* newMappings = [[NSMutableArray alloc] initWithCapacity:storedMappings.count];
 
-    for (unsigned i = 0; i < storedMappings.count; ++i) {
-        NJMapping *mapping = [[NJMapping alloc] initWithSerialization:storedMappings[i]];
-        [newMappings addObject:mapping];
-    }
-    
+    for (NSDictionary *serialization in storedMappings)
+        [newMappings addObject:
+         [[NJMapping alloc] initWithSerialization:serialization]];
     
     if (newMappings.count) {
         _mappings = newMappings;
 
 - (void)renameMapping:(NJMapping *)mapping to:(NSString *)name {
     mapping.name = name;
+    [self mappingsChanged];
     if (mapping == _currentMapping) {
         // FIXME: Hack to trigger updates in the rest of the UI.
         _currentMapping = nil;
         [self activateMapping:mapping];
         _manualMapping = manual;        
     }
-    [self mappingsChanged];
 }
 
 - (void)addMapping:(NJMapping *)mapping {