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