Revision: 14958
          http://sourceforge.net/p/skim-app/code/14958
Author:   hofman
Date:     2025-03-10 16:56:19 +0000 (Mon, 10 Mar 2025)
Log Message:
-----------
property for window to decide when to hode its title based on extra title 
views, instead of using defult value that can change

Modified Paths:
--------------
    trunk/SKMainWindow.h
    trunk/SKMainWindow.m
    trunk/SKMainWindowController.m
    trunk/SKStringConstants.h
    trunk/SKStringConstants.m

Modified: trunk/SKMainWindow.h
===================================================================
--- trunk/SKMainWindow.h        2025-03-10 10:25:36 UTC (rev 14957)
+++ trunk/SKMainWindow.h        2025-03-10 16:56:19 UTC (rev 14958)
@@ -40,6 +40,12 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+typedef NS_ENUM(NSInteger, SKAutoWindowTitleVisibility) {
+    SKWindowTitleVisible,
+    SKWindowTitleHiddenForToolbar,
+    SKWindowTitleHiddenForTabBar
+};
+
 @protocol SKMainWindowDelegate <NSWindowDelegate>
 @optional
 - (void)window:(NSWindow *)window willSendEvent:(NSEvent *)event;
@@ -54,6 +60,8 @@
 
 @property (nullable, weak) id<SKMainWindowDelegate> delegate;
 
+@property (nonatomic) SKAutoWindowTitleVisibility autoTitleVisibility;;
+
 @end
 
 NS_ASSUME_NONNULL_END

Modified: trunk/SKMainWindow.m
===================================================================
--- trunk/SKMainWindow.m        2025-03-10 10:25:36 UTC (rev 14957)
+++ trunk/SKMainWindow.m        2025-03-10 16:56:19 UTC (rev 14958)
@@ -40,12 +40,11 @@
 #import "SKImageToolTipWindow.h"
 #import "NSResponder_SKExtensions.h"
 #import "NSEvent_SKExtensions.h"
-#import "SKStringConstants.h"
 
 
 @implementation SKMainWindow
 
-@synthesize disableConstrainedFrame;
+@synthesize disableConstrainedFrame, autoTitleVisibility;
 @dynamic windowFrame, delegate;
 
 + (id)defaultAnimationForKey:(NSString *)key {
@@ -131,10 +130,24 @@
     }
 }
 
+- (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];
+        }
+    }
+}
+
 - (void)toggleToolbarShown:(id)sender {
     if (@available(macOS 11.0, *)) {
-        NSInteger placement = [[NSUserDefaults standardUserDefaults] 
integerForKey:SKToolbarPlacementKey];
-        if (placement == 1) {
+        if (autoTitleVisibility == SKWindowTitleHiddenForTabBar) {
             NSLayoutAttribute layoutAttribute = [[self toolbar] isVisible] ? 
NSLayoutAttributeTop : NSLayoutAttributeBottom;
             NSString *identifier = [[self toolbar] identifier];
             for (NSWindow *window in [NSApp windows]) {
@@ -141,7 +154,7 @@
                 if ([[[window toolbar] identifier] isEqualToString:identifier] 
&& [window respondsToSelector:@selector(setTabBarLayoutAttribute:)])
                     [(SKMainWindow *)window 
setTabBarLayoutAttribute:layoutAttribute];
             }
-        } else if (placement > 3) {
+        } else if (autoTitleVisibility == SKWindowTitleHiddenForToolbar) {
             NSWindowTitleVisibility visibility = [[self toolbar] isVisible] ? 
NSWindowTitleVisible : NSWindowTitleHidden;
             NSString *identifier = [[self toolbar] identifier];
             for (NSWindow *window in [NSApp windows]) {
@@ -155,7 +168,7 @@
 
 - (void)addTitlebarAccessoryViewController:(NSTitlebarAccessoryViewController 
*)childViewController {
     if (@available(macOS 11.0, *)) {
-        if ([[NSUserDefaults standardUserDefaults] 
integerForKey:SKToolbarPlacementKey] == 1) {
+        if ([self autoTitleVisibility] == SKWindowTitleHiddenForTabBar) {
             [self setTitleVisibility:NSWindowTitleHidden];
             if ([[self toolbar] isVisible] == NO) {
                 [childViewController setLayoutAttribute:NSLayoutAttributeTop];
@@ -173,7 +186,7 @@
 - (void)removeTitlebarAccessoryViewControllerAtIndex:(NSInteger)index {
     [super removeTitlebarAccessoryViewControllerAtIndex:index];
     if (@available(macOS 11.0, *)) {
-        if ([[NSUserDefaults standardUserDefaults] 
integerForKey:SKToolbarPlacementKey] == 1) {
+        if ([self autoTitleVisibility] == SKWindowTitleHiddenForTabBar) {
             [self setTitleVisibility:NSWindowTitleVisible];
             if ([[self toolbar] isVisible] == NO) {
                 NSURL *url = [self representedURL];

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2025-03-10 10:25:36 UTC (rev 14957)
+++ trunk/SKMainWindowController.m      2025-03-10 16:56:19 UTC (rev 14958)
@@ -184,6 +184,8 @@
 
 #define SKDisableSearchBarBlurringKey @"SKDisableSearchBarBlurring"
 
+#define SKToolbarPlacementKey @"SKToolbarPlacement"
+
 #pragma mark -    
 
 @interface SKMainWindowController (SKPrivate)
@@ -333,8 +335,10 @@
         // 0 = below, 1 = compact, 2 = beside, 3 = beside compact, 4 = 
replacing, 5 = replacing compact
         NSInteger placement = [[NSUserDefaults standardUserDefaults] 
integerForKey:SKToolbarPlacementKey];
         [window setToolbarStyle:placement == 0 ? NSWindowToolbarStyleExpanded 
: (placement & 1) ? NSWindowToolbarStyleUnifiedCompact : 
NSWindowToolbarStyleUnified];
-        if (placement > 3 && [[window toolbar] isVisible])
-            [window setTitleVisibility:NSWindowTitleHidden];
+        if (placement == 1)
+            [(SKMainWindow *)window 
setAutoTitleVisibility:SKWindowTitleHiddenForTabBar];
+        else if (placement > 3)
+            [(SKMainWindow *)window 
setAutoTitleVisibility:SKWindowTitleHiddenForToolbar];
     }
     
     // for animations

Modified: trunk/SKStringConstants.h
===================================================================
--- trunk/SKStringConstants.h   2025-03-10 10:25:36 UTC (rev 14957)
+++ trunk/SKStringConstants.h   2025-03-10 16:56:19 UTC (rev 14958)
@@ -149,6 +149,5 @@
 extern NSString *SKSepiaToneKey;
 extern NSString *SKWhitePointKey;
 extern NSString *SKPresentationInkNoteColorKey;
-extern NSString *SKToolbarPlacementKey;
 
 NS_ASSUME_NONNULL_END

Modified: trunk/SKStringConstants.m
===================================================================
--- trunk/SKStringConstants.m   2025-03-10 10:25:36 UTC (rev 14957)
+++ trunk/SKStringConstants.m   2025-03-10 16:56:19 UTC (rev 14958)
@@ -149,4 +149,3 @@
 NSString *SKSepiaToneKey = @"SKSepiaTone";
 NSString *SKWhitePointKey = @"SKWhitePoint";
 NSString *SKPresentationInkNoteColorKey = @"SKPresentationInkNoteColor";
-NSString *SKToolbarPlacementKey = @"SKToolbarPlacement";

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

Reply via email to