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

Reply via email to