Revision: 3889
          http://skim-app.svn.sourceforge.net/skim-app/?rev=3889&view=rev
Author:   hofman
Date:     2008-05-17 10:53:30 -0700 (Sat, 17 May 2008)

Log Message:
-----------
Revert an earlier commit. KVO should use a context to distinguish our 
observations. 

Modified Paths:
--------------
    trunk/SKBookmarkController.m
    trunk/SKMainWindowController.m
    trunk/SKNoteWindowController.m
    trunk/SKPDFDocument.m
    trunk/SKPDFView.m
    trunk/SKPreferenceController.m
    trunk/SKSnapshotWindowController.m

Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m        2008-05-17 17:31:54 UTC (rev 3888)
+++ trunk/SKBookmarkController.m        2008-05-17 17:53:30 UTC (rev 3889)
@@ -71,6 +71,8 @@
 static NSString *SKRecentDocumentAliasDataKey = @"_BDAlias";
 static NSString *SKRecentDocumentSnapshotsKey = @"snapshots";
 
+static NSString *SKBookmarkDefaultsObservationContext = 
@"SKBookmarkDefaultsObservationContext";
+
 @implementation SKBookmarkController
 
 static unsigned int maxRecentDocumentsCount = 0;
@@ -776,21 +778,19 @@
     NSNumber *fontSize = [[NSUserDefaults standardUserDefaults] 
objectForKey:SKTableFontSizeKey];
     if (fontSize)
         [self setFont:[NSFont systemFontOfSize:[fontSize floatValue]]];
-    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKey:SKTableFontSizeKey context:NULL];
+    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKey:SKTableFontSizeKey context:(void *)SKBookmarkDefaultsObservationContext];
 }
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (object == [NSUserDefaultsController sharedUserDefaultsController]) {
-        if ([keyPath hasPrefix:@"values."]) {
-            NSString *key = [keyPath substringFromIndex:7];
-            if ([key isEqualToString:SKTableFontSizeKey]) {
-                NSFont *font = [NSFont systemFontOfSize:[[NSUserDefaults 
standardUserDefaults] floatForKey:SKTableFontSizeKey]];
-                [self setFont:font];
-                return;
-            }
+    if (context == SKBookmarkDefaultsObservationContext) {
+        NSString *key = [keyPath substringFromIndex:7];
+        if ([key isEqualToString:SKTableFontSizeKey]) {
+            NSFont *font = [NSFont systemFontOfSize:[[NSUserDefaults 
standardUserDefaults] floatForKey:SKTableFontSizeKey]];
+            [self setFont:font];
         }
+    } else {
+        [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
     }
-    [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
 }
 
 @end

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2008-05-17 17:31:54 UTC (rev 3888)
+++ trunk/SKMainWindowController.m      2008-05-17 17:53:30 UTC (rev 3889)
@@ -130,6 +130,8 @@
 
 static NSString *SKPDFAnnotationPropertiesObservationContext = 
@"SKPDFAnnotationPropertiesObservationContext";
 
+static NSString *SKMainWindowDefaultsObservationContext = 
@"SKMainWindowDefaultsObservationContext";
+
 NSString *SKLeftSidePaneWidthKey = @"SKLeftSidePaneWidth";
 NSString *SKRightSidePaneWidthKey = @"SKRightSidePaneWidth";
 
@@ -3260,7 +3262,7 @@
                                   SKThumbnailSizeKey, 
SKSnapshotThumbnailSizeKey, 
                                   SKShouldAntiAliasKey, 
SKGreekingThresholdKey, 
                                   SKTableFontSizeKey, nil]
-        context:NULL];
+        context:(void *)SKMainWindowDefaultsObservationContext];
 }
 
 - (void)unregisterAsObserver {
@@ -3323,10 +3325,10 @@
 #pragma mark KVO
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (object == [NSUserDefaultsController sharedUserDefaultsController]) {
+    if (context == SKMainWindowDefaultsObservationContext) {
         
         // A default value that we are observing has changed
-        NSString *key = [keyPath hasPrefix:@"values."] ? [keyPath 
substringFromIndex:7] : nil;
+        NSString *key = [keyPath substringFromIndex:7];
         if ([key isEqualToString:SKBackgroundColorKey]) {
             if ([self isFullScreen] == NO && [self isPresentation] == NO)
                 [pdfView setBackgroundColor:[[NSUserDefaults 
standardUserDefaults] colorForKey:SKBackgroundColorKey]];
@@ -3378,8 +3380,6 @@
             [findTableView setFont:font];
             [groupedFindTableView setFont:font];
             [self updatePageColumnWidthForTableView:outlineView];
-        } else {
-            [super observeValueForKeyPath:keyPath ofObject:object 
change:change context:context];
         }
         
     } else if (context == SKPDFAnnotationPropertiesObservationContext) {

Modified: trunk/SKNoteWindowController.m
===================================================================
--- trunk/SKNoteWindowController.m      2008-05-17 17:31:54 UTC (rev 3888)
+++ trunk/SKNoteWindowController.m      2008-05-17 17:53:30 UTC (rev 3889)
@@ -54,6 +54,7 @@
 
 static NSString *SKNoteWindowPageObservationContext = 
@"SKNoteWindowPageObservationContext";
 static NSString *SKNoteWindowBoundsObservationContext = 
@"SKNoteWindowBoundsObservationContext";
+static NSString *SKNoteWindowDefaultsObservationContext = 
@"SKNoteWindowDefaultsObservationContext";
 
 @implementation SKNoteWindowController
 
@@ -99,7 +100,7 @@
         
         [note addObserver:self forKeyPath:SKPDFAnnotationPageKey options:0 
context:SKNoteWindowPageObservationContext];
         [note addObserver:self forKeyPath:SKPDFAnnotationBoundsKey options:0 
context:SKNoteWindowBoundsObservationContext];
-        [[NSUserDefaultsController sharedUserDefaultsController] 
addObserver:self forKeys:[NSArray arrayWithObjects:SKAnchoredNoteFontNameKey, 
SKAnchoredNoteFontSizeKey, nil] context:NULL];
+        [[NSUserDefaultsController sharedUserDefaultsController] 
addObserver:self forKeys:[NSArray arrayWithObjects:SKAnchoredNoteFontNameKey, 
SKAnchoredNoteFontSizeKey, nil] context:(void 
*)SKNoteWindowDefaultsObservationContext];
     }
     return self;
 }
@@ -292,22 +293,19 @@
 }
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (object == [NSUserDefaultsController sharedUserDefaultsController]) {
-        if ([keyPath hasPrefix:@"values."]) {
-            NSString *key = [keyPath substringFromIndex:7];
-            if (([key isEqualToString:SKAnchoredNoteFontNameKey] || [key 
isEqualToString:SKAnchoredNoteFontSizeKey]) && [self isNoteType] && [[textView 
string] length] == 0) {
-                NSString *fontName = [[NSUserDefaults standardUserDefaults] 
stringForKey:SKAnchoredNoteFontNameKey];
-                float fontSize = [[NSUserDefaults standardUserDefaults] 
floatForKey:SKAnchoredNoteFontSizeKey];
-                NSFont *font = fontName ? [NSFont fontWithName:fontName 
size:fontSize] : nil;
-                if (font)
-                    [textView setFont:font];
-            }
-            return;
+    if (context == SKNoteWindowDefaultsObservationContext) {
+        NSString *key = [keyPath substringFromIndex:7];
+        if (([key isEqualToString:SKAnchoredNoteFontNameKey] || [key 
isEqualToString:SKAnchoredNoteFontSizeKey]) && [self isNoteType] && [[textView 
string] length] == 0) {
+            NSString *fontName = [[NSUserDefaults standardUserDefaults] 
stringForKey:SKAnchoredNoteFontNameKey];
+            float fontSize = [[NSUserDefaults standardUserDefaults] 
floatForKey:SKAnchoredNoteFontSizeKey];
+            NSFont *font = fontName ? [NSFont fontWithName:fontName 
size:fontSize] : nil;
+            if (font)
+                [textView setFont:font];
         }
     } else if (context == SKNoteWindowBoundsObservationContext || context == 
SKNoteWindowPageObservationContext) {
         [self updateStatusMessage];
-        return;
+    } else {
+        [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
     }
-    [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
 }
 @end

Modified: trunk/SKPDFDocument.m
===================================================================
--- trunk/SKPDFDocument.m       2008-05-17 17:31:54 UTC (rev 3888)
+++ trunk/SKPDFDocument.m       2008-05-17 17:53:30 UTC (rev 3889)
@@ -83,6 +83,8 @@
 static NSString *SKAutoRotatePrintedPagesKey = @"SKAutoRotatePrintedPages";
 static NSString *SKDisableReloadAlertKey = @"SKDisableReloadAlert";
 
+static NSString *SKPDFDocumentDefaultsObservationContext = 
@"SKPDFDocumentDefaultsObservationContext";
+
 @interface NSFileManager (SKPDFDocumentExtensions)
 - (NSString *)subfileWithExtension:(NSString *)extensions 
inPDFBundleAtPath:(NSString *)path;
 @end
@@ -164,7 +166,7 @@
     [mainController setAnnotationsFromDictionaries:noteDicts undoable:NO];
     [self setNoteDicts:nil];
     
-    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKey:SKAutoCheckFileUpdateKey context:NULL];
+    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKey:SKAutoCheckFileUpdateKey context:(void 
*)SKPDFDocumentDefaultsObservationContext];
        [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(handleWindowWillCloseNotification:) 
                                                  
name:NSWindowWillCloseNotification object:[mainController window]];
 }
@@ -1280,13 +1282,10 @@
 #pragma mark Notification observation
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (object == [NSUserDefaultsController sharedUserDefaultsController]) {
-        if ([keyPath hasPrefix:@"values."]) {
-            NSString *key = [keyPath substringFromIndex:7];
-            if ([key isEqualToString:SKAutoCheckFileUpdateKey]) {
-                [self checkFileUpdatesIfNeeded];
-                return;
-            }
+    if (context == SKPDFDocumentDefaultsObservationContext) {
+        NSString *key = [keyPath substringFromIndex:7];
+        if ([key isEqualToString:SKAutoCheckFileUpdateKey]) {
+            [self checkFileUpdatesIfNeeded];
         }
     } else {
         [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2008-05-17 17:31:54 UTC (rev 3888)
+++ trunk/SKPDFView.m   2008-05-17 17:53:30 UTC (rev 3889)
@@ -105,6 +105,8 @@
 static NSString *SKDefaultFreeTextNoteContentsKey = 
@"SKDefaultFreeTextNoteContents";
 static NSString *SKDefaultAnchoredNoteContentsKey = 
@"SKDefaultAnchoredNoteContents";
 
+static NSString *SKPDFViewDefaultsObservationContext = 
@"SKPDFViewDefaultsObservationContext";
+
 static unsigned int moveReadingBarModifiers = NSAlternateKeyMask;
 static unsigned int resizeReadingBarModifiers = NSAlternateKeyMask | 
NSShiftKeyMask;
 
@@ -249,7 +251,7 @@
                                                  
name:PDFViewScaleChangedNotification object:self];
     [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKeys:
         [NSArray arrayWithObjects:SKReadingBarColorKey, SKReadingBarInvertKey, 
nil]
-        context:NULL];
+        context:(void *)SKPDFViewDefaultsObservationContext];
 }
 
 - (id)initWithFrame:(NSRect)frameRect {
@@ -2316,20 +2318,18 @@
 #pragma mark KVO
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (object == [NSUserDefaultsController sharedUserDefaultsController]) {
-        if ([keyPath hasPrefix:@"values."]) {
-            NSString *key = [keyPath substringFromIndex:7];
-            if ([key isEqualToString:SKReadingBarColorKey] || [key 
isEqualToString:SKReadingBarInvertKey]) {
-                if (readingBar) {
-                    [self setNeedsDisplay:YES];
-                    [[NSNotificationCenter defaultCenter] 
postNotificationName:SKPDFViewReadingBarDidChangeNotification 
-                        object:self userInfo:[NSDictionary 
dictionaryWithObjectsAndKeys:[readingBar page], SKPDFViewOldPageKey, 
[readingBar page], SKPDFViewNewPageKey, nil]];
-                }
-                return;
+    if (context == SKPDFViewDefaultsObservationContext) {
+        NSString *key = [keyPath substringFromIndex:7];
+        if ([key isEqualToString:SKReadingBarColorKey] || [key 
isEqualToString:SKReadingBarInvertKey]) {
+            if (readingBar) {
+                [self setNeedsDisplay:YES];
+                [[NSNotificationCenter defaultCenter] 
postNotificationName:SKPDFViewReadingBarDidChangeNotification 
+                    object:self userInfo:[NSDictionary 
dictionaryWithObjectsAndKeys:[readingBar page], SKPDFViewOldPageKey, 
[readingBar page], SKPDFViewNewPageKey, nil]];
             }
         }
+    } else {
+        [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
     }
-    [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
 }
 
 - (void)transformCGContext:(CGContextRef)context forPage:(PDFPage *)page {

Modified: trunk/SKPreferenceController.m
===================================================================
--- trunk/SKPreferenceController.m      2008-05-17 17:31:54 UTC (rev 3888)
+++ trunk/SKPreferenceController.m      2008-05-17 17:53:30 UTC (rev 3889)
@@ -55,6 +55,8 @@
 
 static NSString *SKPreferenceWindowFrameAutosaveName = @"SKPreferenceWindow";
 
+static NSString *SKPreferenceWindowDefaultsObservationContext = 
@"SKPreferenceWindowDefaultsObservationContext";
+
 @implementation SKPreferenceController
 
 + (id)sharedPrefenceController {
@@ -71,8 +73,8 @@
         
         sud = [NSUserDefaults standardUserDefaults];
         sudc = [NSUserDefaultsController sharedUserDefaultsController];
-        [sudc addObserver:self forKey:SKDefaultPDFDisplaySettingsKey 
context:NULL];
-        [sudc addObserver:self forKey:SKDefaultFullScreenPDFDisplaySettingsKey 
context:NULL];
+        [sudc addObserver:self forKey:SKDefaultPDFDisplaySettingsKey 
context:(void *)SKPreferenceWindowDefaultsObservationContext];
+        [sudc addObserver:self forKey:SKDefaultFullScreenPDFDisplaySettingsKey 
context:(void *)SKPreferenceWindowDefaultsObservationContext];
     }
     return self;
 }
@@ -265,16 +267,14 @@
 #pragma mark KVO
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (object == [NSUserDefaultsController sharedUserDefaultsController]) {
-        if ([keyPath hasPrefix:@"values."]) {
-            NSString *key = [keyPath substringFromIndex:7];
-            if ([key isEqualToString:SKDefaultPDFDisplaySettingsKey] || [key 
isEqualToString:SKDefaultFullScreenPDFDisplaySettingsKey]) {
-                [self updateRevertButtons];
-                return;
-            }
+    if (context == SKPreferenceWindowDefaultsObservationContext) {
+        NSString *key = [keyPath substringFromIndex:7];
+        if ([key isEqualToString:SKDefaultPDFDisplaySettingsKey] || [key 
isEqualToString:SKDefaultFullScreenPDFDisplaySettingsKey]) {
+            [self updateRevertButtons];
         }
+    } else {
+        [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
     }
-    [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
 }
 
 @end

Modified: trunk/SKSnapshotWindowController.m
===================================================================
--- trunk/SKSnapshotWindowController.m  2008-05-17 17:31:54 UTC (rev 3888)
+++ trunk/SKSnapshotWindowController.m  2008-05-17 17:53:30 UTC (rev 3889)
@@ -66,10 +66,11 @@
 static NSString *SKSnapshotWindowFrameAutosaveName = @"SKSnapshotWindow";
 static NSString *SKSnapshotViewChangedNotification = 
@"SKSnapshotViewChangedNotification";
 
+static NSString *SKSnaphotWindowDefaultsObservationContext = 
@"SKSnaphotWindowDefaultsObservationContext";
+
 @implementation SKSnapshotWindowController
 
 - (void)dealloc {
-    [[NSUserDefaultsController sharedUserDefaultsController] 
removeObserver:self forKey:SKSnapshotsOnTopKey];
        [[NSNotificationCenter defaultCenter] removeObserver: self];
     [thumbnail release];
     [super dealloc];
@@ -83,7 +84,7 @@
     BOOL keepOnTop = [[NSUserDefaults standardUserDefaults] 
boolForKey:SKSnapshotsOnTopKey];
     [[self window] setLevel:keepOnTop || forceOnTop ? NSFloatingWindowLevel : 
NSNormalWindowLevel];
     [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop];
-    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKey:SKSnapshotsOnTopKey context:NULL];
+    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKey:SKSnapshotsOnTopKey context:(void 
*)SKSnaphotWindowDefaultsObservationContext];
 }
 
 - (NSString *)windowTitleForDocumentDisplayName:(NSString *)displayName {
@@ -166,6 +167,7 @@
 }
 
 - (void)windowWillClose:(NSNotification *)notification {
+    [[NSUserDefaultsController sharedUserDefaultsController] 
removeObserver:self forKey:SKSnapshotsOnTopKey];
     if (miniaturizing == NO && [[self delegate] 
respondsToSelector:@selector(snapshotControllerWindowWillClose:)])
         [[self delegate] snapshotControllerWindowWillClose:self];
 }
@@ -531,18 +533,16 @@
 #pragma mark KVO
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (object == [NSUserDefaultsController sharedUserDefaultsController]) {
-        if ([keyPath hasPrefix:@"values."]) {
-            NSString *key = [keyPath substringFromIndex:7];
-            if ([key isEqualToString:SKSnapshotsOnTopKey]) {
-                BOOL keepOnTop = [[NSUserDefaults standardUserDefaults] 
boolForKey:SKSnapshotsOnTopKey];
-                [[self window] setLevel:keepOnTop || forceOnTop ? 
NSFloatingWindowLevel : NSNormalWindowLevel];
-                [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop];
-                return;
-            }
+    if (context == SKSnaphotWindowDefaultsObservationContext) {
+        NSString *key = [keyPath substringFromIndex:7];
+        if ([key isEqualToString:SKSnapshotsOnTopKey]) {
+            BOOL keepOnTop = [[NSUserDefaults standardUserDefaults] 
boolForKey:SKSnapshotsOnTopKey];
+            [[self window] setLevel:keepOnTop || forceOnTop ? 
NSFloatingWindowLevel : NSNormalWindowLevel];
+            [[self window] setHidesOnDeactivate:keepOnTop || forceOnTop];
         }
+    } else {
+        [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
     }
-    [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
 }
 
 @end


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to