From dddb527bfbe8de58fb2d6aeb780a25ff15a02ea4 Mon Sep 17 00:00:00 2001 From: Vadim Shpakovski Date: Wed, 19 Sep 2012 00:56:51 +0300 Subject: Fixes the issue with setting associated User Defaults key twice. --- MASShortcutView+UserDefaults.m | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'MASShortcutView+UserDefaults.m') diff --git a/MASShortcutView+UserDefaults.m b/MASShortcutView+UserDefaults.m index 1b1b8e5..2c4e285 100644 --- a/MASShortcutView+UserDefaults.m +++ b/MASShortcutView+UserDefaults.m @@ -25,6 +25,10 @@ void *kDefaultsObserver = &kDefaultsObserver; - (void)setAssociatedUserDefaultsKey:(NSString *)associatedUserDefaultsKey { + // First, stop observing previous shortcut view + objc_setAssociatedObject(self, kDefaultsObserver, nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + // Next, start observing current shortcut view MASShortcutDefaultsObserver *defaultsObserver = [[MASShortcutDefaultsObserver alloc] initWithShortcutView:self userDefaultsKey:associatedUserDefaultsKey]; objc_setAssociatedObject(self, kDefaultsObserver, defaultsObserver, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } -- cgit v1.2.3 From da2e1af5741cff902ee4c06408316a92695450b8 Mon Sep 17 00:00:00 2001 From: Vadim Shpakovski Date: Wed, 19 Sep 2012 01:44:49 +0300 Subject: Adds a new appearance and fixes bugs related to key equivalents. --- MASShortcutView+UserDefaults.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'MASShortcutView+UserDefaults.m') diff --git a/MASShortcutView+UserDefaults.m b/MASShortcutView+UserDefaults.m index 2c4e285..42a2379 100644 --- a/MASShortcutView+UserDefaults.m +++ b/MASShortcutView+UserDefaults.m @@ -113,7 +113,11 @@ void *kShortcutValueObserver = &kShortcutValueObserver; if (_internalShortcutChange) return; MASShortcut *shortcut = [object valueForKey:keyPath]; _internalPreferenceChange = YES; - [[NSUserDefaults standardUserDefaults] setObject:shortcut.data forKey:_userDefaultsKey]; + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:(shortcut.data ?: [NSKeyedArchiver archivedDataWithRootObject:nil]) forKey:_userDefaultsKey]; + [defaults synchronize]; + _internalPreferenceChange = NO; } else { -- cgit v1.2.3