Revision: 14953
http://sourceforge.net/p/skim-app/code/14953
Author: hofman
Date: 2025-03-09 18:46:38 +0000 (Sun, 09 Mar 2025)
Log Message:
-----------
Add option for hidden pref to move either the tab bar or the toolbar in the
title bar, hiding the title when the tab bar is visible, for a very compact
title bar.
Modified Paths:
--------------
trunk/SKMainWindow.m
trunk/SKMainWindowController.m
Modified: trunk/SKMainWindow.m
===================================================================
--- trunk/SKMainWindow.m 2025-03-07 22:52:16 UTC (rev 14952)
+++ trunk/SKMainWindow.m 2025-03-09 18:46:38 UTC (rev 14953)
@@ -122,12 +122,54 @@
[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)toggleToolbarShown:(id)sender {
if (@available(macOS 11.0, *)) {
- if ([[NSUserDefaults standardUserDefaults]
integerForKey:SKToolbarPlacementKey] > 2)
- [self setTitleVisibility:[[self toolbar] isVisible] ?
NSWindowTitleVisible : NSWindowTitleHidden];
+ NSInteger placement = [[NSUserDefaults standardUserDefaults]
integerForKey:SKToolbarPlacementKey];
+ if (placement == 1) {
+ NSLayoutAttribute layoutAttribute = [[self toolbar] isVisible] ?
NSLayoutAttributeTop : NSLayoutAttributeBottom;
+ for (SKMainWindow *window in [self tabbedWindows] ?: @[self])
+ [window setTabBarLayoutAttribute:layoutAttribute];
+ } else if (placement > 3) {
+ NSWindowTitleVisibility visibility = [[self toolbar] isVisible] ?
NSWindowTitleVisible : NSWindowTitleHidden;
+ for (NSWindow *window in [self tabbedWindows] ?: @[self])
+ [window setTitleVisibility:visibility];
+ }
}
[super toggleToolbarShown:sender];
}
+- (void)addTitlebarAccessoryViewController:(NSTitlebarAccessoryViewController
*)childViewController {
+ if (@available(macOS 11.0, *)) {
+ if ([[NSUserDefaults standardUserDefaults]
integerForKey:SKToolbarPlacementKey] == 1 && [[self toolbar] isVisible] == NO) {
+ [childViewController setLayoutAttribute:NSLayoutAttributeTop];
+ [self setTitleVisibility:NSWindowTitleHidden];
+ NSURL *url = [self representedURL];
+ [self setRepresentedURL:nil];
+ [self setRepresentedURL:url];
+ }
+ }
+ [super addTitlebarAccessoryViewController:childViewController];
+}
+
+- (void)removeTitlebarAccessoryViewControllerAtIndex:(NSInteger)index {
+ [super removeTitlebarAccessoryViewControllerAtIndex:index];
+ if (@available(macOS 11.0, *)) {
+ if ([[NSUserDefaults standardUserDefaults]
integerForKey:SKToolbarPlacementKey] == 1 && [[self toolbar] isVisible] == NO) {
+ [self setTitleVisibility:NSWindowTitleVisible];
+ NSURL *url = [self representedURL];
+ [self setRepresentedURL:nil];
+ [self setRepresentedURL:url];
+ }
+ }
+}
+
@end
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2025-03-07 22:52:16 UTC (rev 14952)
+++ trunk/SKMainWindowController.m 2025-03-09 18:46:38 UTC (rev 14953)
@@ -330,10 +330,10 @@
if (@available(macOS 11.0, *)) {
// hidden pref for toolbar position relative to title:
- // 0 = below, 1 = beside, 2 = beside compact, 3 = replacing, 4 =
replacing compact
+ // 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 % 2) ? NSWindowToolbarStyleUnified :
NSWindowToolbarStyleUnifiedCompact];
- if (placement > 2 && [[window toolbar] isVisible])
+ [window setToolbarStyle:placement == 0 ? NSWindowToolbarStyleExpanded
: (placement & 1) ? NSWindowToolbarStyleUnifiedCompact :
NSWindowToolbarStyleUnified];
+ if (placement > 3 && [[window toolbar] isVisible])
[window setTitleVisibility:NSWindowTitleHidden];
}
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