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

Reply via email to