Revision: 15300 http://sourceforge.net/p/skim-app/code/15300 Author: hofman Date: 2025-05-26 16:42:54 +0000 (Mon, 26 May 2025) Log Message: ----------- Avoid using mainWindow outside presentation mode
Modified Paths: -------------- trunk/SKMainWindowController.m trunk/SKMainWindowController_FullScreen.m trunk/SKMainWindowController_UI.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2025-05-26 15:59:32 UTC (rev 15299) +++ trunk/SKMainWindowController.m 2025-05-26 16:42:54 UTC (rev 15300) @@ -562,8 +562,12 @@ if ([self interactionMode] != SKFullScreenMode) { NSString *rectString = [setup objectForKey:MAINWINDOWFRAME_KEY]; - if (rectString) - [mainWindow setFrame:NSRectFromString(rectString) display:[mainWindow isVisible]]; + if (rectString) { + if ([self interactionMode] == SKPresentationMode) + [mainWindow setFrame:NSRectFromString(rectString) display:NO]; + else + [[self window] setFrame:NSRectFromString(rectString) display:YES]; + } } NSNumber *leftWidth = [setup objectForKey:LEFTSIDEPANEWIDTH_KEY]; @@ -599,7 +603,10 @@ SKDestination dest = [pdfView currentDestinationRotated:&rotated]; NSArray *cropBoxes = [self changedCropBoxes]; - [setup setObject:NSStringFromRect([mainWindow frame]) forKey:MAINWINDOWFRAME_KEY]; + if ([self interactionMode] == SKPresentationMode) + [setup setObject:NSStringFromRect([mainWindow frame]) forKey:MAINWINDOWFRAME_KEY]; + else + [setup setObject:NSStringFromRect([[self window] frame]) forKey:MAINWINDOWFRAME_KEY]; [setup setObject:[NSNumber numberWithDouble:[self leftSideWidth]] forKey:LEFTSIDEPANEWIDTH_KEY]; [setup setObject:[NSNumber numberWithDouble:[self rightSideWidth]] forKey:RIGHTSIDEPANEWIDTH_KEY]; [setup setObject:[NSNumber numberWithUnsignedInteger:dest.pageIndex] forKey:PAGEINDEX_KEY]; @@ -1665,7 +1672,7 @@ if ([NSView shouldShowFadeAnimation] == NO) animate = NO; - BOOL isMainWindow = [overviewContentView window] == mainWindow; + BOOL isMainWindow = 0 != ([[overviewContentView window] styleMask] & NSWindowStyleMaskTitled); NSView *newView = isMainWindow ? splitView : presentationView; NSView *newKeyView = isMainWindow ? pdfView : presentationView; NSView *contentView = [overviewContentView superview]; @@ -1673,7 +1680,7 @@ NSArray *constraints = @[ [[newView leadingAnchor] constraintEqualToAnchor:[contentView leadingAnchor]], [[contentView trailingAnchor] constraintEqualToAnchor:[newView trailingAnchor]], - [[newView topAnchor] constraintEqualToAnchor:[(mwcFlags.fullSizeContent || isMainWindow == NO ? contentView : [mainWindow contentLayoutGuide]) topAnchor]], + [[newView topAnchor] constraintEqualToAnchor:[(mwcFlags.fullSizeContent || isMainWindow == NO ? contentView : [[contentView window] contentLayoutGuide]) topAnchor]], [(hasStatus ? [statusBar topAnchor] : [contentView bottomAnchor]) constraintEqualToAnchor:[newView bottomAnchor]]]; if (animate) { @@ -2523,7 +2530,7 @@ @catch (id e) {} } if (mwcFlags.fullSizeContent) { - @try { [mainWindow removeObserver:self forKeyPath:@"contentLayoutRect" context:&SKMainWindowContentLayoutObservationContext]; } + @try { [[self window] removeObserver:self forKeyPath:@"contentLayoutRect" context:&SKMainWindowContentLayoutObservationContext]; } @catch (id e) {} } if (overviewView) { Modified: trunk/SKMainWindowController_FullScreen.m =================================================================== --- trunk/SKMainWindowController_FullScreen.m 2025-05-26 15:59:32 UTC (rev 15299) +++ trunk/SKMainWindowController_FullScreen.m 2025-05-26 16:42:54 UTC (rev 15300) @@ -591,8 +591,8 @@ } - (void)window:(NSWindow *)window startCustomAnimationToEnterFullScreenWithDuration:(NSTimeInterval)duration { - if (fullScreenToolbarOffset <= 0.0 && autoHideToolbarInFullScreen() == NO && [[mainWindow toolbar] isVisible]) - fullScreenToolbarOffset = toolbarViewOffset(mainWindow); + if (fullScreenToolbarOffset <= 0.0 && autoHideToolbarInFullScreen() == NO && [[window toolbar] isVisible]) + fullScreenToolbarOffset = toolbarViewOffset(window); NSRect frame = SKShrinkRect([[window screen] frame], -fullScreenOffset(window), NSMaxYEdge); if ([[NSUserDefaults standardUserDefaults] boolForKey:AppleMenuBarVisibleInFullscreenKey]) frame.size.height -= [[NSApp mainMenu] menuBarHeight] ?: 24.0; @@ -629,8 +629,8 @@ } - (void)windowDidEnterFullScreen:(NSNotification *)notification { - if (fullScreenToolbarOffset < 0.0 && autoHideToolbarInFullScreen() == NO && [[mainWindow toolbar] isVisible]) { - CGFloat toolbarItemOffset = toolbarViewOffset(mainWindow); + if (fullScreenToolbarOffset < 0.0 && autoHideToolbarInFullScreen() == NO && [[[self window] toolbar] isVisible]) { + CGFloat toolbarItemOffset = toolbarViewOffset([self window]); if (toolbarItemOffset < 0.0) // save the offset for the next time, we may guess it wrong as it varies between OS versions fullScreenToolbarOffset = toolbarItemOffset - fullScreenToolbarOffset; Modified: trunk/SKMainWindowController_UI.m =================================================================== --- trunk/SKMainWindowController_UI.m 2025-05-26 15:59:32 UTC (rev 15299) +++ trunk/SKMainWindowController_UI.m 2025-05-26 16:42:54 UTC (rev 15300) @@ -302,12 +302,12 @@ } - (void)windowDidChangeBackingProperties:(NSNotification *)notification { - if ([notification object] != mainWindow) - return; - CGFloat oldScale = [[[notification userInfo] objectForKey:@"NSBackingPropertyOldScaleFactorKey"] doubleValue]; - if (fabs(oldScale - [[self window] backingScaleFactor]) > 0.0) { - [self allThumbnailsNeedUpdate]; - [self allSnapshotsNeedUpdate]; + if (0 != ([[notification object] styleMask] & NSWindowStyleMaskTitled)) { + CGFloat oldScale = [[[notification userInfo] objectForKey:@"NSBackingPropertyOldScaleFactorKey"] doubleValue]; + if (fabs(oldScale - [[self window] backingScaleFactor]) > 0.0) { + [self allThumbnailsNeedUpdate]; + [self allSnapshotsNeedUpdate]; + } } } 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