Revision: 7331 http://skim-app.svn.sourceforge.net/skim-app/?rev=7331&view=rev Author: hofman Date: 2011-07-07 23:44:29 +0000 (Thu, 07 Jul 2011)
Log Message: ----------- fade pref pane switches, disable animation when hidden pref is set Modified Paths: -------------- trunk/SKPreferenceController.m Modified: trunk/SKPreferenceController.m =================================================================== --- trunk/SKPreferenceController.m 2011-07-07 11:32:14 UTC (rev 7330) +++ trunk/SKPreferenceController.m 2011-07-07 23:44:29 UTC (rev 7331) @@ -44,6 +44,7 @@ #import "SKSyncPreferences.h" #import "NSUserDefaultsController_SKExtensions.h" #import "SKFontWell.h" +#import "SKStringConstants.h" #import "NSView_SKExtensions.h" #import "NSGeometry_SKExtensions.h" @@ -108,29 +109,44 @@ return nil; } +- (void)endAnimation { + [contentView setWantsLayer:NO]; +} + - (void)selectPane:(SKPreferencePane *)pane { if ([pane isEqual:currentPane] == NO) { - - [[self window] setTitle:[pane title]]; - // make sure edits are committed [currentPane commitEditing]; [[NSUserDefaultsController sharedUserDefaultsController] commitEditing]; + NSView *oldView = [currentPane view]; NSView *view = [pane view]; NSRect frame = [view frame]; CGFloat dh = NSHeight([contentView frame]) - NSHeight(frame); - [contentView replaceSubview:[currentPane view] with:view]; - - currentPane = pane; - frame = [[self window] frame]; frame.origin.y += dh; frame.size.height -= dh; - [[self window] setFrame:frame display:YES animate:YES]; + currentPane = pane; + + [[self window] setTitle:[currentPane title]]; [[NSUserDefaults standardUserDefaults] setObject:[currentPane nibName] forKey:SKLastSelectedPreferencePaneKey]; + + if ([[NSUserDefaults standardUserDefaults] boolForKey:SKDisableAnimationsKey]) { + [contentView replaceSubview:oldView with:view]; + [[self window] setFrame:frame display:YES]; + } else { + NSTimeInterval duration = [[self window] animationResizeTime:frame]; + [contentView setWantsLayer:YES]; + [contentView displayIfNeeded]; + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:duration]; + [[contentView animator] replaceSubview:oldView with:view]; + [[[self window] animator] setFrame:frame display:YES]; + [NSAnimationContext endGrouping]; + [self performSelector:@selector(endAnimation) withObject:nil afterDelay:duration]; + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2d-c2 _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit