Revision: 14961 http://sourceforge.net/p/skim-app/code/14961 Author: hofman Date: 2025-03-11 10:27:36 +0000 (Tue, 11 Mar 2025) Log Message: ----------- let eaqch window decide for itself how to update when toggling toolbar
Modified Paths: -------------- trunk/SKMainWindow.m Modified: trunk/SKMainWindow.m =================================================================== --- trunk/SKMainWindow.m 2025-03-11 10:09:31 UTC (rev 14960) +++ trunk/SKMainWindow.m 2025-03-11 10:27:36 UTC (rev 14961) @@ -121,12 +121,17 @@ [super setDelegate:newDelegate]; } -- (void)setTabBarLayoutAttribute:(NSLayoutAttribute)layoutAttribute { - NSTitlebarAccessoryViewController *tabBarController = [[self titlebarAccessoryViewControllers] firstObject]; - if (tabBarController && [tabBarController layoutAttribute] != layoutAttribute) { - [super removeTitlebarAccessoryViewControllerAtIndex:0]; - [tabBarController setLayoutAttribute:layoutAttribute]; - [super addTitlebarAccessoryViewController:tabBarController]; +- (void)updateForToolbarVisibility:(BOOL)toolbarIsVisible { + if (autoTitleVisibility == SKWindowTitleHiddenForTabBar) { + NSLayoutAttribute layoutAttribute = toolbarIsVisible ? NSLayoutAttributeBottom : NSLayoutAttributeTop; + NSTitlebarAccessoryViewController *tabBarController = [[self titlebarAccessoryViewControllers] firstObject]; + if (tabBarController && [tabBarController layoutAttribute] != layoutAttribute) { + [super removeTitlebarAccessoryViewControllerAtIndex:0]; + [tabBarController setLayoutAttribute:layoutAttribute]; + [super addTitlebarAccessoryViewController:tabBarController]; + } + } else if (autoTitleVisibility == SKWindowTitleHiddenForToolbar) { + [self setTitleVisibility:toolbarIsVisible ? NSWindowTitleHidden : NSWindowTitleVisible]; } } @@ -133,33 +138,21 @@ - (void)setAutoTitleVisibility:(SKAutoWindowTitleVisibility)visibility { if (autoTitleVisibility != visibility) { autoTitleVisibility = visibility; - if (autoTitleVisibility == SKWindowTitleHiddenForTabBar) { - if ([[self titlebarAccessoryViewControllers] count]) { - [self setTitleVisibility:NSWindowTitleHidden]; - [self setTabBarLayoutAttribute:[[self toolbar] isVisible] ? NSLayoutAttributeTop : NSLayoutAttributeBottom]; - } - } else if (autoTitleVisibility == SKWindowTitleHiddenForToolbar) { - if ([[self toolbar] isVisible]) - [self setTitleVisibility:NSWindowTitleHidden]; - } + if (autoTitleVisibility) + [self updateForToolbarVisibility:[[self toolbar] isVisible]]; + if (autoTitleVisibility == SKWindowTitleHiddenForTabBar && [[self titlebarAccessoryViewControllers] count]) + [self setTitleVisibility:NSWindowTitleHidden]; } } - (void)toggleToolbarShown:(id)sender { - if (autoTitleVisibility == SKWindowTitleHiddenForTabBar) { - NSLayoutAttribute layoutAttribute = [[self toolbar] isVisible] ? NSLayoutAttributeTop : NSLayoutAttributeBottom; + if (autoTitleVisibility) { + BOOL willBeVisible = [[self toolbar] isVisible] == NO; NSString *identifier = [[self toolbar] identifier]; for (NSWindow *window in [NSApp windows]) { - if ([[[window toolbar] identifier] isEqualToString:identifier] && [window isKindOfClass:[SKMainWindow class]] && [(SKMainWindow *)window autoTitleVisibility] == autoTitleVisibility) - [(SKMainWindow *)window setTabBarLayoutAttribute:layoutAttribute]; + if ([[[window toolbar] identifier] isEqualToString:identifier] && [window respondsToSelector:@selector(updateForToolbarVisibility:)]) + [(SKMainWindow *)window updateForToolbarVisibility:willBeVisible]; } - } else if (autoTitleVisibility == SKWindowTitleHiddenForToolbar) { - NSWindowTitleVisibility visibility = [[self toolbar] isVisible] ? NSWindowTitleVisible : NSWindowTitleHidden; - NSString *identifier = [[self toolbar] identifier]; - for (NSWindow *window in [NSApp windows]) { - if ([[[window toolbar] identifier] isEqualToString:identifier] && [window isKindOfClass:[SKMainWindow class]] && [(SKMainWindow *)window autoTitleVisibility] == autoTitleVisibility) - [window setTitleVisibility:visibility]; - } } [super toggleToolbarShown:sender]; } 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