Revision: 15304
http://sourceforge.net/p/skim-app/code/15304
Author: hofman
Date: 2025-05-26 22:23:53 +0000 (Mon, 26 May 2025)
Log Message:
-----------
Use local variables for normal window during presentation switch and for static
display window for fullscreen animation. Rename ivar.
Modified Paths:
--------------
trunk/SKMainWindowController.h
trunk/SKMainWindowController.m
trunk/SKMainWindowController_FullScreen.m
Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h 2025-05-26 17:21:52 UTC (rev 15303)
+++ trunk/SKMainWindowController.h 2025-05-26 22:23:53 UTC (rev 15304)
@@ -127,7 +127,7 @@
NSArray<NSString *> *tags;
double rating;
- NSWindow *savedWindow;
+ NSWindow *savedNormalWindow;
SKSideWindow *sideWindow;
SKInteractionMode interactionMode;
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2025-05-26 17:21:52 UTC (rev 15303)
+++ trunk/SKMainWindowController.m 2025-05-26 22:23:53 UTC (rev 15304)
@@ -564,7 +564,7 @@
NSString *rectString = [setup objectForKey:MAINWINDOWFRAME_KEY];
if (rectString) {
if ([self interactionMode] == SKPresentationMode)
- [savedWindow setFrame:NSRectFromString(rectString)
display:NO];
+ [savedNormalWindow 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([savedWindow frame])
forKey:MAINWINDOWFRAME_KEY];
+ [setup setObject:NSStringFromRect([savedNormalWindow 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] - [savedWindow backingScaleFactor]) >
0.0) {
+ if (isPresentation && mwcFlags.thumbnailsUpdatedDuringPresentaton == 0 &&
fabs([[self window] backingScaleFactor] - [savedNormalWindow
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([savedWindow
backingScaleFactor] - scale) > 0.0)
+ if ([self interactionMode] == SKPresentationMode &&
mwcFlags.thumbnailsNeedUpdateAfterPresentaton == 0 && fabs([savedNormalWindow
backingScaleFactor] - scale) > 0.0)
mwcFlags.thumbnailsNeedUpdateAfterPresentaton = 1;
dispatch_async(queue, ^{
Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m 2025-05-26 17:21:52 UTC (rev
15303)
+++ trunk/SKMainWindowController_FullScreen.m 2025-05-26 22:23:53 UTC (rev
15304)
@@ -109,7 +109,7 @@
[leftSideController.topBar setDrawsBackground:NO];
}
- if (mwcFlags.thumbnailsUpdatedDuringPresentaton == 0 && fabs([[self
window] backingScaleFactor] - [savedWindow backingScaleFactor]) > 0.0) {
+ if (mwcFlags.thumbnailsUpdatedDuringPresentaton == 0 && fabs([[self
window] backingScaleFactor] - [savedNormalWindow backingScaleFactor]) > 0.0) {
[self allThumbnailsNeedUpdate];
mwcFlags.thumbnailsUpdatedDuringPresentaton = 1;
}
@@ -239,11 +239,12 @@
// remember normal setup to return to, we must do this before changing the
interactionMode
[savedNormalSetup setDictionary:[self currentPDFSettings]];
+ NSWindow *normalWindow = [self window];
+ savedNormalWindow = normalWindow;
+
interactionMode = SKPresentationMode;
- savedWindow = [self window];
-
- NSScreen *screen = [savedWindow screen];
+ NSScreen *screen = [normalWindow 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 +270,15 @@
[self showNotesForPresentationWindow:presentationWindow];
BOOL shouldFadeOut = NO;
- if ([[savedWindow tabbedWindows] count] > 1) {
- NSUInteger tabIndex = [[savedWindow tabbedWindows]
indexOfObject:savedWindow];
- [savedNormalSetup setObject:[savedWindow tabGroup]
forKey:TABGROUP_KEY];
+ if ([[normalWindow tabbedWindows] count] > 1) {
+ NSUInteger tabIndex = [[normalWindow tabbedWindows]
indexOfObject:normalWindow];
+ [savedNormalSetup setObject:[normalWindow tabGroup]
forKey:TABGROUP_KEY];
[savedNormalSetup setObject:[NSNumber
numberWithUnsignedInteger:tabIndex] forKey:TABINDEX_KEY];
- } else if (NSContainsRect([presentationWindow frame], [savedWindow frame])
== NO) {
+ } else if (NSContainsRect([presentationWindow frame], [normalWindow
frame]) == NO) {
shouldFadeOut = YES;
}
- [savedWindow setDelegate:nil];
+ [normalWindow setDelegate:nil];
[self setWindow:presentationWindow];
@@ -292,7 +293,7 @@
[context setTimingFunction:[CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[presentationWindow animator] setAlphaValue:1.0];
if (shouldFadeOut)
- [[savedWindow animator] setAlphaValue:0.0];
+ [[normalWindow animator] setAlphaValue:0.0];
[[[presentationPreview window] animator] setAlphaValue:1.0];
}
completionHandler:^{
@@ -300,8 +301,8 @@
if ([NSScreen screenForWindowHasMenuBar:presentationWindow])
[NSApp
setPresentationOptions:NSApplicationPresentationHideDock |
NSApplicationPresentationHideMenuBar];
- [savedWindow orderOutWithoutAnimation];
- [savedWindow setAlphaValue:1.0];
+ [normalWindow orderOutWithoutAnimation];
+ [normalWindow setAlphaValue:1.0];
if ([self hasOverview])
[self hideOverviewAnimating:NO];
@@ -368,8 +369,11 @@
if (mode != [pdfView extendedDisplayMode])
[pdfView setExtendedDisplayModeAndRewind:mode];
- [self setWindow:savedWindow];
+ NSWindow *normalWindow = savedNormalWindow;
+ savedNormalWindow = nil;
+ [self setWindow:normalWindow];
+
if (mwcFlags.thumbnailsNeedUpdateAfterPresentaton) {
mwcFlags.thumbnailsNeedUpdateAfterPresentaton = 0;
[self allThumbnailsNeedUpdate];
@@ -379,20 +383,20 @@
NSWindowTabGroup *tabGroup = [savedNormalSetup objectForKey:TABGROUP_KEY];
BOOL moveToTab = [[tabGroup windows] count] > 0;
- [savedWindow setAlphaValue:0.0];
- if (NSPointInRect(SKCenterPoint([savedWindow frame]), [[presentationWindow
screen] frame]) && moveToTab == NO) {
- NSWindowCollectionBehavior collectionBehavior = [savedWindow
collectionBehavior];
+ [normalWindow setAlphaValue:0.0];
+ if (NSPointInRect(SKCenterPoint([normalWindow frame]),
[[presentationWindow screen] frame]) && moveToTab == NO) {
+ NSWindowCollectionBehavior collectionBehavior = [normalWindow
collectionBehavior];
// trick to make sure the main window shows up in the same space as
the fullscreen window
- [savedWindow setCollectionBehavior:collectionBehavior |
NSWindowCollectionBehaviorMoveToActiveSpace];
- [savedWindow orderFrontWithoutAnimation];
- dispatch_async(dispatch_get_main_queue(), ^{ [savedWindow
setCollectionBehavior:collectionBehavior]; });
+ [normalWindow setCollectionBehavior:collectionBehavior |
NSWindowCollectionBehaviorMoveToActiveSpace];
+ [normalWindow orderFrontWithoutAnimation];
+ dispatch_async(dispatch_get_main_queue(), ^{ [normalWindow
setCollectionBehavior:collectionBehavior]; });
} else {
- [savedWindow orderFrontWithoutAnimation];
+ [normalWindow orderFrontWithoutAnimation];
}
- if ([pdfView window] == savedWindow)
- [savedWindow makeFirstResponder:pdfView];
- [savedWindow setDelegate:self];
- [savedWindow makeKeyWindow];
+ if ([pdfView window] == normalWindow)
+ [normalWindow makeFirstResponder:pdfView];
+ [normalWindow setDelegate:self];
+ [normalWindow makeKeyWindow];
[NSApp removeWindowsItem:presentationWindow];
[presentationWindow setLevel:NSPopUpMenuWindowLevel];
@@ -401,10 +405,10 @@
if (moveToTab) {
NSUInteger tabIndex = [[savedNormalSetup objectForKey:TABINDEX_KEY]
unsignedIntegerValue];
- [savedWindow setAlphaValue:1.0];
- [tabGroup insertWindow:savedWindow atIndex:MIN(tabIndex, [[tabGroup
windows] count])];
- } else if (NSContainsRect([presentationWindow frame], [savedWindow
frame])) {
- [savedWindow setAlphaValue:1.0];
+ [normalWindow setAlphaValue:1.0];
+ [tabGroup insertWindow:normalWindow atIndex:MIN(tabIndex, [[tabGroup
windows] count])];
+ } else if (NSContainsRect([presentationWindow frame], [normalWindow
frame])) {
+ [normalWindow setAlphaValue:1.0];
}
[savedNormalSetup removeAllObjects];
@@ -417,8 +421,8 @@
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:PRESENTATION_DURATION];
[context setTimingFunction:[CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
- if ([savedWindow alphaValue] < 1.0)
- [[savedWindow animator] setAlphaValue:1.0];
+ if ([normalWindow alphaValue] < 1.0)
+ [[normalWindow animator] setAlphaValue:1.0];
[[presentationWindow animator] setAlphaValue:0.0];
[[[presentationPreview window] animator] setAlphaValue:0.0];
}
@@ -429,8 +433,6 @@
[presentationView setPage:nil];
[presentationView setAutoScales:NO];
- savedWindow = nil;
-
if (presentationPreview) {
[[presentationPreview window]
setAnimationBehavior:NSWindowAnimationBehaviorNone];
[presentationPreview close];
@@ -470,7 +472,7 @@
}
}
-- (void)displayStaticContentForWindow:(NSWindow *)window {
+- (void)displayStaticContentForWindow:(NSWindow *)window inWindow:(NSWindow
*)displayWindow {
NSRect frame = [window frame];
CGImageRef cgImage = CGWindowListCreateImage(CGRectNull,
kCGWindowListOptionIncludingWindow, (CGWindowID)[window windowNumber],
kCGWindowImageBoundsIgnoreFraming | kCGWindowImageBestResolution);
if (([window styleMask] & NSWindowStyleMaskFullScreen) != 0 &&
autoHideToolbarInFullScreen() == NO && [[window toolbar] isVisible]) {
@@ -494,14 +496,11 @@
}
NSImage *image = [[NSImage alloc] initWithCGImage:cgImage size:frame.size];
CGImageRelease(cgImage);
- if (savedWindow == nil)
- savedWindow = [[SKAnimatedBorderlessWindow alloc]
initWithContentRect:frame];
- else
- [savedWindow setFrame:frame display:NO];
- [savedWindow addImageViewWithImage:image];
- [savedWindow setHasShadow:[window hasShadow]];
- [savedWindow setLevel:[window level]];
- [savedWindow orderWindow:NSWindowAbove relativeTo:window];
+ [displayWindow setFrame:frame display:NO];
+ [displayWindow addImageViewWithImage:image];
+ [displayWindow setHasShadow:[window hasShadow]];
+ [displayWindow setLevel:[window level]];
+ [displayWindow orderWindow:NSWindowAbove relativeTo:window];
[window setAlphaValue:0.0];
}
@@ -588,8 +587,8 @@
if ([windows count] == 1)
return nil;
if ([[NSWorkspace sharedWorkspace]
accessibilityDisplayShouldReduceMotion]) {
- savedWindow = [[SKAnimatedBorderlessWindow alloc]
initWithContentRect:[window frame]];
- windows = [windows arrayByAddingObject:savedWindow];
+ savedNormalWindow = [[SKAnimatedBorderlessWindow alloc]
initWithContentRect:[window frame]];
+ windows = [windows arrayByAddingObject:savedNormalWindow];
}
return windows;
}
@@ -600,11 +599,11 @@
NSRect frame = SKShrinkRect([[window screen] frame],
-fullScreenOffset(window), NSMaxYEdge);
if ([[NSUserDefaults standardUserDefaults]
boolForKey:AppleMenuBarVisibleInFullscreenKey])
frame.size.height -= [[NSApp mainMenu] menuBarHeight] ?: 24.0;
- if (savedWindow != nil) {
- [self displayStaticContentForWindow:window];
+ if (savedNormalWindow != nil) {
+ [self displayStaticContentForWindow:window inWindow:savedNormalWindow];
[(SKMainWindow *)window setDisableConstrainedFrame:YES];
[window setFrame:frame display:YES];
- [window orderWindow:NSWindowAbove relativeTo:savedWindow];
+ [window orderWindow:NSWindowAbove relativeTo:savedNormalWindow];
setAlphaValueOfTitleBarControls(window, 0.0, NO);
[(SKMainWindow *)window setDisableConstrainedFrame:NO];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
@@ -613,8 +612,8 @@
[[window animator] setAlphaValue:1.0];
}
completionHandler:^{
- [savedWindow orderOut:nil];
- savedWindow = nil;
+ [savedNormalWindow orderOut:nil];
+ savedNormalWindow = nil;
}];
} else {
[(SKMainWindow *)window setDisableConstrainedFrame:YES];
@@ -656,7 +655,7 @@
}
if ([[pdfView document] isLocked] == NO || [savedNormalSetup count] == 1)
[savedNormalSetup removeAllObjects];
- savedWindow = nil;
+ savedNormalWindow = nil;
interactionMode = SKNormalMode;
mwcFlags.isSwitchingFullScreen = 0;
}
@@ -681,8 +680,8 @@
if ([windows count] == 1)
return nil;
if ([[NSWorkspace sharedWorkspace]
accessibilityDisplayShouldReduceMotion]) {
- savedWindow = [[SKAnimatedBorderlessWindow alloc]
initWithContentRect:[window frame]];
- windows = [windows arrayByAddingObject:savedWindow];
+ savedNormalWindow = [[SKAnimatedBorderlessWindow alloc]
initWithContentRect:[window frame]];
+ windows = [windows arrayByAddingObject:savedNormalWindow];
}
return windows;
}
@@ -689,13 +688,13 @@
- (void)window:(NSWindow *)window
startCustomAnimationToExitFullScreenWithDuration:(NSTimeInterval)duration {
NSRect frame = NSRectFromString([savedNormalSetup
objectForKey:MAINWINDOWFRAME_KEY]);
- if (savedWindow != nil) {
- [self displayStaticContentForWindow:window];
+ if (savedNormalWindow != nil) {
+ [self displayStaticContentForWindow:window inWindow:savedNormalWindow];
[window setStyleMask:[window styleMask] &
~NSWindowStyleMaskFullScreen];
setAlphaValueOfTitleBarControls(window, 1.0, NO);
[window setFrame:frame display:YES];
[window setLevel:NSNormalWindowLevel];
- BOOL covered = NSContainsRect([savedWindow frame], [window frame]);
+ BOOL covered = NSContainsRect([savedNormalWindow frame], [window
frame]);
if (covered)
[window setAlphaValue:1.0];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
@@ -703,11 +702,11 @@
[context setTimingFunction:[CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
if (covered == NO)
[[window animator] setAlphaValue:1.0];
- [[savedWindow animator] setAlphaValue:0.0];
+ [[savedNormalWindow animator] setAlphaValue:0.0];
}
completionHandler:^{
- [savedWindow orderOut:nil];
- savedWindow = nil;
+ [savedNormalWindow orderOut:nil];
+ savedNormalWindow = nil;
}];
} else {
NSRect startFrame = [window frame];
@@ -756,7 +755,7 @@
[self applyPDFSettings:fullScreenSetup rewind:YES];
[self forceSubwindowsOnTop:YES];
}
- savedWindow = nil;
+ savedNormalWindow = 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit