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