Revision: 15352 http://sourceforge.net/p/skim-app/code/15352 Author: hofman Date: 2025-06-03 09:50:22 +0000 (Tue, 03 Jun 2025) Log Message: ----------- convenience inline functions for conditions
Modified Paths: -------------- trunk/SKMainWindowController_FullScreen.m Modified: trunk/SKMainWindowController_FullScreen.m =================================================================== --- trunk/SKMainWindowController_FullScreen.m 2025-06-03 09:34:34 UTC (rev 15351) +++ trunk/SKMainWindowController_FullScreen.m 2025-06-03 09:50:22 UTC (rev 15352) @@ -475,7 +475,7 @@ [layer setBounds:[[window contentView] bounds]]; [layer setContentsScale:[window backingScaleFactor]]; [layer setContents:CFBridgingRelease(cgImage)]; - if (([window styleMask] & NSWindowStyleMaskFullScreen) != 0 && autoHideToolbarInFullScreen() == NO && [[window toolbar] isVisible]) { + if (([window styleMask] & NSWindowStyleMaskFullScreen) != 0 && showToolbarInFullScreen(window)) { for (NSWindow *tbWindow in [window childWindows]) { if ([NSStringFromClass([tbWindow class]) containsString:@"Toolbar"]) { CGImageRef tbCgImage = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, (CGWindowID)[tbWindow windowNumber], kCGWindowImageBoundsIgnoreFraming | kCGWindowImageBestResolution); @@ -500,34 +500,32 @@ #pragma mark NSWindowDelegate Full Screen Methods -static inline BOOL autoHideToolbarInFullScreen() { - return [[NSUserDefaults standardUserDefaults] boolForKey:SKAutoHideToolbarInFullScreenKey]; +static inline BOOL showToolbarInFullScreen(NSWindow *window) { + return [[NSUserDefaults standardUserDefaults] boolForKey:SKAutoHideToolbarInFullScreenKey] == NO && (window == nil || [[window toolbar] isVisible]); } +static inline BOOL hasUnifiedToolbar(NSWindow *window) { + if (@available(macOS 11.0, *)) + return [window toolbarStyle] != NSWindowToolbarStyleExpanded; + return NO; +} + static inline CGFloat fullScreenOffset(NSWindow *window) { - if (autoHideToolbarInFullScreen()) { + if (showToolbarInFullScreen(window) == NO) return NSHeight([window frame]) - NSHeight([window contentLayoutRect]); - } else if ([[window toolbar] isVisible] == NO) { - return NSHeight([NSWindow frameRectForContentRect:NSZeroRect styleMask:NSWindowStyleMaskTitled]); - } else if (@available(macOS 11.0, *)) { - if ([window toolbarStyle] != NSWindowToolbarStyleExpanded) - return 0.0; - else if (fullScreenToolbarOffset > 0.0) - return fullScreenToolbarOffset; - else - return 16.0; - } else if (fullScreenToolbarOffset > 0.0) { + else if (hasUnifiedToolbar(window)) + return 0.0; + else if (fullScreenToolbarOffset > 0.0) return fullScreenToolbarOffset; - } else { + else if (@available(macOS 11.0, *)) + return 16.0; + else return 17.0; - } } static inline CGFloat toolbarViewOffset(NSWindow *window) { - if (@available(macOS 11.0, *)) { - if ([window toolbarStyle] != NSWindowToolbarStyleExpanded) - return 0.0; - } + if (hasUnifiedToolbar(window)) + return 0.0; NSToolbar *toolbar = [window toolbar]; NSView *view = nil; if ([toolbar displayMode] == NSToolbarDisplayModeLabelOnly) { @@ -590,9 +588,10 @@ } - (NSApplicationPresentationOptions)window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions { - if (autoHideToolbarInFullScreen()) + if (showToolbarInFullScreen(nil)) + return proposedOptions; + else return proposedOptions | NSApplicationPresentationAutoHideToolbar; - return proposedOptions; } - (NSArray *)customWindowsToEnterFullScreenForWindow:(NSWindow *)window { @@ -609,7 +608,7 @@ [self displayStaticContentInWindow:displayWindow ordered:NSWindowBelow]; NSTitlebarAccessoryViewController *noteToolbar = nil; CALayer *blackLayer = nil; - if ([[window toolbar] isVisible] && autoHideToolbarInFullScreen() == NO) { + if (showToolbarInFullScreen(window)) { if (fullScreenToolbarOffset <= 0.0) fullScreenToolbarOffset = toolbarViewOffset(window); CGFloat offset = fullScreenOffset(window); @@ -650,7 +649,7 @@ } - (void)windowDidEnterFullScreen:(NSNotification *)notification { - if (fullScreenToolbarOffset < 0.0 && autoHideToolbarInFullScreen() == NO && [[[self window] toolbar] isVisible]) { + if (fullScreenToolbarOffset < 0.0 && showToolbarInFullScreen([self window])) { 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 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