Revision: 12680
          http://sourceforge.net/p/skim-app/code/12680
Author:   hofman
Date:     2022-01-04 15:17:20 +0000 (Tue, 04 Jan 2022)
Log Message:
-----------
Implement undo for transitions in setters of transition controller instead of 
by KVO

Modified Paths:
--------------
    trunk/SKPDFView.m
    trunk/SKTransitionController.m

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2022-01-04 15:04:54 UTC (rev 12679)
+++ trunk/SKPDFView.m   2022-01-04 15:17:20 UTC (rev 12680)
@@ -152,7 +152,6 @@
 #define SKAnnotationKey @"SKAnnotation"
 
 static char SKPDFViewDefaultsObservationContext;
-static char SKPDFViewTransitionsObservationContext;
 
 static NSUInteger moveReadingBarModifiers = NSAlternateKeyMask;
 static NSUInteger resizeReadingBarModifiers = NSAlternateKeyMask | 
NSShiftKeyMask;
@@ -371,10 +370,6 @@
     [[NSSpellChecker sharedSpellChecker] 
closeSpellDocumentWithTag:spellingTag];
     [[NSUserDefaultsController sharedUserDefaultsController] 
removeObserver:self forKeys:[[self class] defaultKeysToObserve] 
context:&SKPDFViewDefaultsObservationContext];
     [[NSNotificationCenter defaultCenter] removeObserver:self];
-    [transitionController removeObserver:self forKeyPath:@"transitionStyle" 
context:&SKPDFViewTransitionsObservationContext];
-    [transitionController removeObserver:self forKeyPath:@"duration" 
context:&SKPDFViewTransitionsObservationContext];
-    [transitionController removeObserver:self forKeyPath:@"shouldRestrict" 
context:&SKPDFViewTransitionsObservationContext];
-    [transitionController removeObserver:self forKeyPath:@"pageTransitions" 
context:&SKPDFViewTransitionsObservationContext];
     [self disableNavigation];
     [[SKImageToolTipWindow sharedToolTipWindow] orderOut:self];
     [self removePDFToolTipRects];
@@ -952,14 +947,8 @@
 }
 
 - (SKTransitionController * )transitionController {
-    if (transitionController == nil) {
+    if (transitionController == nil)
         transitionController = [[SKTransitionController alloc] 
initForView:self];
-        NSKeyValueObservingOptions options = (NSKeyValueObservingOptionNew | 
NSKeyValueObservingOptionOld);
-        [transitionController addObserver:self forKeyPath:@"transitionStyle" 
options:options context:&SKPDFViewTransitionsObservationContext];
-        [transitionController addObserver:self forKeyPath:@"duration" 
options:options context:&SKPDFViewTransitionsObservationContext];
-        [transitionController addObserver:self forKeyPath:@"shouldRestrict" 
options:options context:&SKPDFViewTransitionsObservationContext];
-        [transitionController addObserver:self forKeyPath:@"pageTransitions" 
options:options context:&SKPDFViewTransitionsObservationContext];
-    }
     return transitionController;
 }
 
@@ -3252,10 +3241,6 @@
 
 #pragma mark KVO
 
-- (void)setTransitionControllerValue:(id)value forKey:(NSString *)key {
-    [transitionController setValue:value forKey:key];
-}
-
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
     if (context == &SKPDFViewDefaultsObservationContext) {
         NSString *key = [keyPath substringFromIndex:7];
@@ -3269,10 +3254,6 @@
                     object:self userInfo:[NSDictionary 
dictionaryWithObjectsAndKeys:[readingBar page], SKPDFViewOldPageKey, 
[readingBar page], SKPDFViewNewPageKey, nil]];
             }
         }
-    } else if (context == &SKPDFViewTransitionsObservationContext) {
-        id oldValue = [change objectForKey:NSKeyValueChangeOldKey];
-        if ([oldValue isEqual:[NSNull null]]) oldValue = nil;
-        [[[self undoManager] prepareWithInvocationTarget:self] 
setTransitionControllerValue:oldValue forKey:keyPath];
     } else {
         [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
     }

Modified: trunk/SKTransitionController.m
===================================================================
--- trunk/SKTransitionController.m      2022-01-04 15:04:54 UTC (rev 12679)
+++ trunk/SKTransitionController.m      2022-01-04 15:17:20 UTC (rev 12680)
@@ -325,6 +325,35 @@
     return transitionStyle != SKNoTransition || pageTransitions != nil;
 }
 
+- (void)setTransitionStyle:(SKTransitionStyle)newTransitionStyle {
+    if (transitionStyle != newTransitionStyle) {
+        [[[view undoManager] prepareWithInvocationTarget:self] 
setTransitionStyle:transitionStyle];
+        transitionStyle = newTransitionStyle;
+    }
+}
+
+- (void)setDuration:(CGFloat)newDuration {
+    if (fabs(duration - newDuration) > 0.0) {
+        [[[view undoManager] prepareWithInvocationTarget:self] 
setDuration:duration];
+        duration = newDuration;
+    }
+}
+
+- (void)setShouldRestrict:(BOOL)newShouldRestrict {
+    if (shouldRestrict != newShouldRestrict) {
+        [[[view undoManager] prepareWithInvocationTarget:self] 
setShouldRestrict:shouldRestrict];
+        shouldRestrict = newShouldRestrict;
+    }
+}
+
+- (void)setPageTransitions:(NSArray *)newPageTransitions {
+    if (newPageTransitions != pageTransitions) {
+        [[[view undoManager] prepareWithInvocationTarget:self] 
setPageTransitions:pageTransitions];
+        [pageTransitions release];
+        pageTransitions = [newPageTransitions copy];
+    }
+}
+
 static inline CGRect scaleRect(NSRect rect, CGFloat scale) {
     return CGRectMake(scale * NSMinX(rect), scale * NSMinY(rect), scale * 
NSWidth(rect), scale * NSHeight(rect));
 }

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



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to