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
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit