Revision: 15303
          http://sourceforge.net/p/skim-app/code/15303
Author:   hofman
Date:     2025-05-26 17:21:52 +0000 (Mon, 26 May 2025)
Log Message:
-----------
Use same ivar savedWindow for normal window during presentation and animation 
window during fullscreen animation

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

Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h      2025-05-26 17:08:43 UTC (rev 15302)
+++ trunk/SKMainWindowController.h      2025-05-26 17:21:52 UTC (rev 15303)
@@ -127,9 +127,8 @@
     NSArray<NSString *>                 *tags;
     double                              rating;
     
-    NSWindow                            *mainWindow;
+    NSWindow                            *savedWindow;
     SKSideWindow                        *sideWindow;
-    NSWindow                            *animationWindow;
     
     SKInteractionMode                   interactionMode;
     

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2025-05-26 17:08:43 UTC (rev 15302)
+++ trunk/SKMainWindowController.m      2025-05-26 17:21:52 UTC (rev 15303)
@@ -564,7 +564,7 @@
             NSString *rectString = [setup objectForKey:MAINWINDOWFRAME_KEY];
             if (rectString) {
                 if ([self interactionMode] == SKPresentationMode)
-                    [mainWindow setFrame:NSRectFromString(rectString) 
display:NO];
+                    [savedWindow setFrame:NSRectFromString(rectString) 
display:NO];
                 else
                     [[self window] setFrame:NSRectFromString(rectString) 
display:YES];
             }
@@ -604,7 +604,7 @@
     NSArray *cropBoxes = [self changedCropBoxes];
     
     if ([self interactionMode] == SKPresentationMode)
-        [setup setObject:NSStringFromRect([mainWindow frame]) 
forKey:MAINWINDOWFRAME_KEY];
+        [setup setObject:NSStringFromRect([savedWindow frame]) 
forKey:MAINWINDOWFRAME_KEY];
     else
         [setup setObject:NSStringFromRect([[self window] frame]) 
forKey:MAINWINDOWFRAME_KEY];
     [setup setObject:[NSNumber numberWithDouble:[self leftSideWidth]] 
forKey:LEFTSIDEPANEWIDTH_KEY];
@@ -1638,7 +1638,7 @@
     
     [[SKImageToolTipWindow sharedToolTipWindow] orderOut:nil];
     
-    if (isPresentation && mwcFlags.thumbnailsUpdatedDuringPresentaton == 0 && 
fabs([[self window] backingScaleFactor] - [mainWindow backingScaleFactor]) > 
0.0) {
+    if (isPresentation && mwcFlags.thumbnailsUpdatedDuringPresentaton == 0 && 
fabs([[self window] backingScaleFactor] - [savedWindow backingScaleFactor]) > 
0.0) {
         [self allThumbnailsNeedUpdate];
         mwcFlags.thumbnailsUpdatedDuringPresentaton = 1;
     }
@@ -2912,7 +2912,7 @@
     CGFloat scale = [[self window] backingScaleFactor];
     dispatch_queue_t queue = [thumbnail isPlaceholder] ? [[self class] 
thumbnailQueue] : [[self class] utilityThumbnailQueue];
     
-    if ([self interactionMode] == SKPresentationMode && 
mwcFlags.thumbnailsNeedUpdateAfterPresentaton == 0 && fabs([mainWindow 
backingScaleFactor] - scale) > 0.0)
+    if ([self interactionMode] == SKPresentationMode && 
mwcFlags.thumbnailsNeedUpdateAfterPresentaton == 0 && fabs([savedWindow 
backingScaleFactor] - scale) > 0.0)
         mwcFlags.thumbnailsNeedUpdateAfterPresentaton = 1;
     
     dispatch_async(queue, ^{

Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m   2025-05-26 17:08:43 UTC (rev 
15302)
+++ trunk/SKMainWindowController_FullScreen.m   2025-05-26 17:21:52 UTC (rev 
15303)
@@ -109,7 +109,7 @@
         [leftSideController.topBar setDrawsBackground:NO];
     }
 
-    if (mwcFlags.thumbnailsUpdatedDuringPresentaton == 0 && fabs([[self 
window] backingScaleFactor] - [mainWindow backingScaleFactor]) > 0.0) {
+    if (mwcFlags.thumbnailsUpdatedDuringPresentaton == 0 && fabs([[self 
window] backingScaleFactor] - [savedWindow backingScaleFactor]) > 0.0) {
         [self allThumbnailsNeedUpdate];
         mwcFlags.thumbnailsUpdatedDuringPresentaton = 1;
     }
@@ -241,9 +241,9 @@
     
     interactionMode = SKPresentationMode;
     
-    mainWindow = [self window];
+    savedWindow = [self window];
     
-    NSScreen *screen = [mainWindow screen];
+    NSScreen *screen = [savedWindow screen];
     if ([self presentationNotesDocument] && [self presentationNotesDocument] 
!= [self document]) {
         NSArray *screens = [[[[self presentationNotesDocument] mainWindow] 
screen] alternateScreens];
         if ([screens count] > 0 && [screens containsObject:[screen 
primaryScreen]] == NO)
@@ -269,15 +269,15 @@
         [self showNotesForPresentationWindow:presentationWindow];
     
     BOOL shouldFadeOut = NO;
-    if ([[mainWindow tabbedWindows] count] > 1) {
-        NSUInteger tabIndex = [[mainWindow tabbedWindows] 
indexOfObject:mainWindow];
-        [savedNormalSetup setObject:[mainWindow tabGroup] forKey:TABGROUP_KEY];
+    if ([[savedWindow tabbedWindows] count] > 1) {
+        NSUInteger tabIndex = [[savedWindow tabbedWindows] 
indexOfObject:savedWindow];
+        [savedNormalSetup setObject:[savedWindow tabGroup] 
forKey:TABGROUP_KEY];
         [savedNormalSetup setObject:[NSNumber 
numberWithUnsignedInteger:tabIndex] forKey:TABINDEX_KEY];
-    } else if (NSContainsRect([presentationWindow frame], [mainWindow frame]) 
== NO) {
+    } else if (NSContainsRect([presentationWindow frame], [savedWindow frame]) 
== NO) {
         shouldFadeOut = YES;
     }
     
-    [mainWindow setDelegate:nil];
+    [savedWindow setDelegate:nil];
     
     [self setWindow:presentationWindow];
     
@@ -292,7 +292,7 @@
             [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
             [[presentationWindow animator] setAlphaValue:1.0];
             if (shouldFadeOut)
-                [[mainWindow animator] setAlphaValue:0.0];
+                [[savedWindow animator] setAlphaValue:0.0];
             [[[presentationPreview window] animator] setAlphaValue:1.0];
         }
         completionHandler:^{
@@ -300,8 +300,8 @@
             if ([NSScreen screenForWindowHasMenuBar:presentationWindow])
                 [NSApp 
setPresentationOptions:NSApplicationPresentationHideDock | 
NSApplicationPresentationHideMenuBar];
             
-            [mainWindow orderOutWithoutAnimation];
-            [mainWindow setAlphaValue:1.0];
+            [savedWindow orderOutWithoutAnimation];
+            [savedWindow setAlphaValue:1.0];
             if ([self hasOverview])
                 [self hideOverviewAnimating:NO];
             
@@ -368,7 +368,7 @@
     if (mode != [pdfView extendedDisplayMode])
         [pdfView setExtendedDisplayModeAndRewind:mode];
     
-    [self setWindow:mainWindow];
+    [self setWindow:savedWindow];
     
     if (mwcFlags.thumbnailsNeedUpdateAfterPresentaton) {
         mwcFlags.thumbnailsNeedUpdateAfterPresentaton = 0;
@@ -379,20 +379,20 @@
     NSWindowTabGroup *tabGroup = [savedNormalSetup objectForKey:TABGROUP_KEY];
     BOOL moveToTab = [[tabGroup windows] count] > 0;
     
-    [mainWindow setAlphaValue:0.0];
-    if (NSPointInRect(SKCenterPoint([mainWindow frame]), [[presentationWindow 
screen] frame]) && moveToTab == NO) {
-        NSWindowCollectionBehavior collectionBehavior = [mainWindow 
collectionBehavior];
+    [savedWindow setAlphaValue:0.0];
+    if (NSPointInRect(SKCenterPoint([savedWindow frame]), [[presentationWindow 
screen] frame]) && moveToTab == NO) {
+        NSWindowCollectionBehavior collectionBehavior = [savedWindow 
collectionBehavior];
         // trick to make sure the main window shows up in the same space as 
the fullscreen window
-        [mainWindow setCollectionBehavior:collectionBehavior | 
NSWindowCollectionBehaviorMoveToActiveSpace];
-        [mainWindow orderFrontWithoutAnimation];
-        dispatch_async(dispatch_get_main_queue(), ^{ [mainWindow 
setCollectionBehavior:collectionBehavior]; });
+        [savedWindow setCollectionBehavior:collectionBehavior | 
NSWindowCollectionBehaviorMoveToActiveSpace];
+        [savedWindow orderFrontWithoutAnimation];
+        dispatch_async(dispatch_get_main_queue(), ^{ [savedWindow 
setCollectionBehavior:collectionBehavior]; });
     } else {
-        [mainWindow orderFrontWithoutAnimation];
+        [savedWindow orderFrontWithoutAnimation];
     }
-    if ([pdfView window] == mainWindow)
-        [mainWindow makeFirstResponder:pdfView];
-    [mainWindow setDelegate:self];
-    [mainWindow makeKeyWindow];
+    if ([pdfView window] == savedWindow)
+        [savedWindow makeFirstResponder:pdfView];
+    [savedWindow setDelegate:self];
+    [savedWindow makeKeyWindow];
     
     [NSApp removeWindowsItem:presentationWindow];
     [presentationWindow setLevel:NSPopUpMenuWindowLevel];
@@ -401,10 +401,10 @@
     
     if (moveToTab) {
         NSUInteger tabIndex = [[savedNormalSetup objectForKey:TABINDEX_KEY] 
unsignedIntegerValue];
-        [mainWindow setAlphaValue:1.0];
-        [tabGroup insertWindow:mainWindow atIndex:MIN(tabIndex, [[tabGroup 
windows] count])];
-    } else if (NSContainsRect([presentationWindow frame], [mainWindow frame])) 
{
-        [mainWindow setAlphaValue:1.0];
+        [savedWindow setAlphaValue:1.0];
+        [tabGroup insertWindow:savedWindow atIndex:MIN(tabIndex, [[tabGroup 
windows] count])];
+    } else if (NSContainsRect([presentationWindow frame], [savedWindow 
frame])) {
+        [savedWindow setAlphaValue:1.0];
     }
     
     [savedNormalSetup removeAllObjects];
@@ -417,8 +417,8 @@
     [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
             [context setDuration:PRESENTATION_DURATION];
             [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
-            if ([mainWindow alphaValue] < 1.0)
-                [[mainWindow animator] setAlphaValue:1.0];
+            if ([savedWindow alphaValue] < 1.0)
+                [[savedWindow animator] setAlphaValue:1.0];
             [[presentationWindow animator] setAlphaValue:0.0];
             [[[presentationPreview window] animator] setAlphaValue:0.0];
         }
@@ -429,7 +429,7 @@
             [presentationView setPage:nil];
             [presentationView setAutoScales:NO];
             
-            mainWindow = nil;
+            savedWindow = nil;
             
             if (presentationPreview) {
                 [[presentationPreview window] 
setAnimationBehavior:NSWindowAnimationBehaviorNone];
@@ -494,14 +494,14 @@
     }
     NSImage *image = [[NSImage alloc] initWithCGImage:cgImage size:frame.size];
     CGImageRelease(cgImage);
-    if (animationWindow == nil)
-        animationWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:frame];
+    if (savedWindow == nil)
+        savedWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:frame];
     else
-        [animationWindow setFrame:frame display:NO];
-    [animationWindow addImageViewWithImage:image];
-    [animationWindow setHasShadow:[window hasShadow]];
-    [animationWindow setLevel:[window level]];
-    [animationWindow orderWindow:NSWindowAbove relativeTo:window];
+        [savedWindow setFrame:frame display:NO];
+    [savedWindow addImageViewWithImage:image];
+    [savedWindow setHasShadow:[window hasShadow]];
+    [savedWindow setLevel:[window level]];
+    [savedWindow orderWindow:NSWindowAbove relativeTo:window];
     [window setAlphaValue:0.0];
 }
 
@@ -588,8 +588,8 @@
     if ([windows count] == 1)
         return nil;
     if ([[NSWorkspace sharedWorkspace] 
accessibilityDisplayShouldReduceMotion]) {
-        animationWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:[window frame]];
-        windows = [windows arrayByAddingObject:animationWindow];
+        savedWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:[window frame]];
+        windows = [windows arrayByAddingObject:savedWindow];
     }
     return windows;
 }
@@ -600,11 +600,11 @@
     NSRect frame = SKShrinkRect([[window screen] frame], 
-fullScreenOffset(window), NSMaxYEdge);
     if ([[NSUserDefaults standardUserDefaults] 
boolForKey:AppleMenuBarVisibleInFullscreenKey])
         frame.size.height -= [[NSApp mainMenu] menuBarHeight] ?: 24.0;
-    if (animationWindow != nil) {
+    if (savedWindow != nil) {
         [self displayStaticContentForWindow:window];
         [(SKMainWindow *)window setDisableConstrainedFrame:YES];
         [window setFrame:frame display:YES];
-        [window orderWindow:NSWindowAbove relativeTo:animationWindow];
+        [window orderWindow:NSWindowAbove relativeTo:savedWindow];
         setAlphaValueOfTitleBarControls(window, 0.0, NO);
         [(SKMainWindow *)window setDisableConstrainedFrame:NO];
         [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
@@ -613,8 +613,8 @@
                 [[window animator] setAlphaValue:1.0];
             }
             completionHandler:^{
-                [animationWindow orderOut:nil];
-                animationWindow = nil;
+                [savedWindow orderOut:nil];
+                savedWindow = nil;
             }];
     } else {
         [(SKMainWindow *)window setDisableConstrainedFrame:YES];
@@ -656,7 +656,7 @@
     }
     if ([[pdfView document] isLocked] == NO || [savedNormalSetup count] == 1)
         [savedNormalSetup removeAllObjects];
-    animationWindow = nil;
+    savedWindow = nil;
     interactionMode = SKNormalMode;
     mwcFlags.isSwitchingFullScreen = 0;
 }
@@ -681,8 +681,8 @@
     if ([windows count] == 1)
         return nil;
     if ([[NSWorkspace sharedWorkspace] 
accessibilityDisplayShouldReduceMotion]) {
-        animationWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:[window frame]];
-        windows = [windows arrayByAddingObject:animationWindow];
+        savedWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:[window frame]];
+        windows = [windows arrayByAddingObject:savedWindow];
     }
     return windows;
 }
@@ -689,13 +689,13 @@
 
 - (void)window:(NSWindow *)window 
startCustomAnimationToExitFullScreenWithDuration:(NSTimeInterval)duration {
     NSRect frame = NSRectFromString([savedNormalSetup 
objectForKey:MAINWINDOWFRAME_KEY]);
-    if (animationWindow != nil) {
+    if (savedWindow != nil) {
         [self displayStaticContentForWindow:window];
         [window setStyleMask:[window styleMask] & 
~NSWindowStyleMaskFullScreen];
         setAlphaValueOfTitleBarControls(window, 1.0, NO);
         [window setFrame:frame display:YES];
         [window setLevel:NSNormalWindowLevel];
-        BOOL covered = NSContainsRect([animationWindow frame], [window frame]);
+        BOOL covered = NSContainsRect([savedWindow frame], [window frame]);
         if (covered)
             [window setAlphaValue:1.0];
         [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
@@ -703,11 +703,11 @@
                 [context setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
                 if (covered == NO)
                     [[window animator] setAlphaValue:1.0];
-                [[animationWindow animator] setAlphaValue:0.0];
+                [[savedWindow animator] setAlphaValue:0.0];
             }
             completionHandler:^{
-                [animationWindow orderOut:nil];
-                animationWindow = nil;
+                [savedWindow orderOut:nil];
+                savedWindow = nil;
             }];
     } else {
         NSRect startFrame = [window frame];
@@ -756,7 +756,7 @@
             [self applyPDFSettings:fullScreenSetup rewind:YES];
         [self forceSubwindowsOnTop:YES];
     }
-    animationWindow = nil;
+    savedWindow = nil;
     mwcFlags.isSwitchingFullScreen = 0;
     mwcFlags.wantsPresentationOrFullScreen = 0;
 }

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