Revision: 13392
          http://sourceforge.net/p/skim-app/code/13392
Author:   hofman
Date:     2023-03-19 15:55:36 +0000 (Sun, 19 Mar 2023)
Log Message:
-----------
don't fade window behind fullscreen window in animation, it is implicitly 
covered or uncovered by the fading fullscreen window

Modified Paths:
--------------
    trunk/SKMainWindowController_FullScreen.m

Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m   2023-03-17 23:00:15 UTC (rev 
13391)
+++ trunk/SKMainWindowController_FullScreen.m   2023-03-19 15:55:36 UTC (rev 
13392)
@@ -385,19 +385,6 @@
     [window setAlphaValue:0.0];
 }
 
-- (void)crossFadeToWindow:(NSWindow *)window duration:(NSTimeInterval)duration 
{
-    [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
-            [context setDuration:duration];
-            [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
-            [[window animator] setAlphaValue:1.0];
-            [[animationWindow animator] setAlphaValue:0.0];
-        }
-        completionHandler:^{
-            [animationWindow orderOut:nil];
-            SKDESTROY(animationWindow);
-        }];
-}
-
 #pragma mark API
 
 - (void)enterFullscreen {
@@ -466,7 +453,17 @@
     
     mwcFlags.isSwitchingFullScreen = 0;
     
-    [self crossFadeToWindow:fullScreenWindow duration:PRESENTATION_DURATION];
+    [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
+            [context setDuration:PRESENTATION_DURATION];
+            [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
+            [[fullScreenWindow animator] setAlphaValue:1.0];
+            if (NSContainsRect([fullScreenWindow frame], [animationWindow 
frame]) == NO);
+                [[animationWindow animator] setAlphaValue:0.0];
+        }
+        completionHandler:^{
+            [animationWindow orderOut:nil];
+            SKDESTROY(animationWindow);
+        }];
     
     [pdfView setInteractionMode:SKPresentationMode];
     [touchBarController interactionModeChanged];
@@ -530,8 +527,22 @@
     
     [animationWindow setLevel:NSPopUpMenuWindowLevel];
     
-    [self crossFadeToWindow:mainWindow duration:PRESENTATION_DURATION];
+    BOOL covered = NSContainsRect([animationWindow frame], [mainWindow frame]);
+    if (covered)
+        [mainWindow setAlphaValue:1.0];
     
+    [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
+            [context setDuration:PRESENTATION_DURATION];
+            [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
+            if (covered == NO)
+                [[mainWindow animator] setAlphaValue:1.0];
+            [[animationWindow animator] setAlphaValue:0.0];
+        }
+        completionHandler:^{
+            [animationWindow orderOut:nil];
+            SKDESTROY(animationWindow);
+        }];
+    
     // the page number may have changed
     [self synchronizeWindowTitleWithDocumentName];
 }
@@ -625,7 +636,15 @@
             if ([view isKindOfClass:[NSControl class]])
                 [view setAlphaValue:0.0];
         [(SKMainWindow *)window setDisableConstrainedFrame:NO];
-        [self crossFadeToWindow:window duration:duration];
+        [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
+                [context setDuration:duration];
+                [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
+                [[window animator] setAlphaValue:1.0];
+            }
+            completionHandler:^{
+                [animationWindow orderOut:nil];
+                SKDESTROY(animationWindow);
+            }];
     } else {
         [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
                 [context setDuration:duration - 0.02];
@@ -711,7 +730,16 @@
                 [view setAlphaValue:1.0];
         [window setFrame:frame display:YES];
         [window setLevel:NSNormalWindowLevel];
-        [self crossFadeToWindow:window duration:duration];
+        [window setAlphaValue:1.0];
+        [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
+                [context setDuration:duration];
+                [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
+                [[animationWindow animator] setAlphaValue:0.0];
+            }
+            completionHandler:^{
+                [animationWindow orderOut:nil];
+                SKDESTROY(animationWindow);
+            }];
     } else {
         [(SKMainWindow *)window setDisableConstrainedFrame:YES];
         [window setStyleMask:[window styleMask] & 
~NSWindowStyleMaskFullScreen];

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



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to