Revision: 16074
http://sourceforge.net/p/skim-app/code/16074
Author: hofman
Date: 2026-03-18 18:18:08 +0000 (Wed, 18 Mar 2026)
Log Message:
-----------
Use normal window for full screen animation when having no toolbar but a
titlebar accessory view, e.g. the tab bar
Modified Paths:
--------------
trunk/SKMainWindowController_FullScreen.m
Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m 2026-03-18 17:23:20 UTC (rev
16073)
+++ trunk/SKMainWindowController_FullScreen.m 2026-03-18 18:18:08 UTC (rev
16074)
@@ -505,10 +505,6 @@
#pragma mark NSWindowDelegate Full Screen Methods
-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;
@@ -529,8 +525,10 @@
return view ? NSMaxY([[view window] convertRectToScreen:[view
convertRect:[view bounds] toView:nil]]) - NSMaxY([[view window] frame]) : 0.0;
}
-static inline CGFloat fullScreenOffset(NSWindow *window) {
- if (hasUnifiedToolbar(window))
+static inline CGFloat fullScreenOffset(NSWindow *window, CGFloat
accessoryHeight) {
+ if (accessoryHeight > 0.0)
+ return NSHeight([window frame]) - NSHeight([window contentLayoutRect])
- accessoryHeight;
+ else if (hasUnifiedToolbar(window))
return 0.0;
if (fullScreenToolbarOffset <= 0.0)
fullScreenToolbarOffset = toolbarViewOffset(window);
@@ -543,7 +541,7 @@
}
static inline void saveFullScreenToolbarOffset(NSWindow *window) {
- if (fullScreenToolbarOffset < 0.0 && showToolbarInFullScreen(window) &&
hasUnifiedToolbar(window) == NO) {
+ if (fullScreenToolbarOffset < 0.0 && [[NSUserDefaults
standardUserDefaults] boolForKey:SKAutoHideToolbarInFullScreenKey] == NO &&
[[window toolbar] isVisible] && hasUnifiedToolbar(window) == NO) {
CGFloat toolbarItemOffset = toolbarViewOffset(window);
if (toolbarItemOffset < 0.0)
// save the offset for the next time, we may guess it wrong as it
varies between OS versions
@@ -600,7 +598,7 @@
}
- (NSApplicationPresentationOptions)window:(NSWindow *)window
willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions
{
- if (showToolbarInFullScreen(nil))
+ if ([[NSUserDefaults standardUserDefaults]
boolForKey:SKAutoHideToolbarInFullScreenKey] == NO)
return proposedOptions;
else
return proposedOptions | NSApplicationPresentationAutoHideToolbar;
@@ -625,8 +623,18 @@
[self displayStaticContentInWindow:displayWindow ordered:NSWindowBelow];
NSTitlebarAccessoryViewController *noteToolbar = nil;
CALayer *blackLayer = nil;
- if (showToolbarInFullScreen(window)) {
- CGFloat offset = fullScreenOffset(window);
+ BOOL showToolbarWindow = [[NSUserDefaults standardUserDefaults]
boolForKey:SKAutoHideToolbarInFullScreenKey] == NO;
+ CGFloat accessoryHeight = 0.0;
+ if (showToolbarWindow && [[window toolbar] isVisible] == NO) {
+ for (NSTitlebarAccessoryViewController *accessory in [window
titlebarAccessoryViewControllers]) {
+ if ([accessory layoutAttribute] == NSLayoutAttributeBottom)
+ accessoryHeight += [accessory fullScreenMinHeight];
+ }
+ if (accessoryHeight <= 0.0)
+ showToolbarWindow = NO;
+ }
+ if (showToolbarWindow) {
+ CGFloat offset = fullScreenOffset(window, accessoryHeight);
frame.size.height += offset;
NSUInteger i = noteToolbarController && [noteToolbarController
fullScreenMinHeight] <= 0.0 ? [[window titlebarAccessoryViewControllers]
indexOfObject:noteToolbarController] : NSNotFound;
if (i != NSNotFound) {
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