Revision: 14983
http://sourceforge.net/p/skim-app/code/14983
Author: hofman
Date: 2025-03-17 22:33:21 +0000 (Mon, 17 Mar 2025)
Log Message:
-----------
Move title bar accessory view controller to titlebar only for tab bar controller
Modified Paths:
--------------
trunk/SKMainWindow.m
Modified: trunk/SKMainWindow.m
===================================================================
--- trunk/SKMainWindow.m 2025-03-17 17:55:47 UTC (rev 14982)
+++ trunk/SKMainWindow.m 2025-03-17 22:33:21 UTC (rev 14983)
@@ -42,6 +42,10 @@
#import "NSEvent_SKExtensions.h"
+@interface NSWindow (SKPrivateDeclarations)
+- (NSTitlebarAccessoryViewController *)_tabBarAccessoryViewController;
+@end
+
@implementation SKMainWindow
@synthesize disableConstrainedFrame, autoTitleVisibility;
@@ -121,14 +125,23 @@
[super setDelegate:newDelegate];
}
+- (NSTitlebarAccessoryViewController *)safeTabBarAccessoryController {
+ if ([self respondsToSelector:@selector(_tabBarAccessoryViewController)])
+ return [self _tabBarAccessoryViewController];
+ return nil;
+}
+
- (void)updateForToolbarVisibility:(BOOL)toolbarIsVisible {
if (autoTitleVisibility == SKWindowTitleHiddenForTabBar) {
NSLayoutAttribute layoutAttribute = toolbarIsVisible ?
NSLayoutAttributeBottom : NSLayoutAttributeTop;
- NSTitlebarAccessoryViewController *tabBarController = [[self
titlebarAccessoryViewControllers] firstObject];
+ NSTitlebarAccessoryViewController *tabBarController = [self
safeTabBarAccessoryController];
if (tabBarController && [tabBarController layoutAttribute] !=
layoutAttribute) {
- [super removeTitlebarAccessoryViewControllerAtIndex:0];
- [tabBarController setLayoutAttribute:layoutAttribute];
- [super addTitlebarAccessoryViewController:tabBarController];
+ NSUInteger i = [[self titlebarAccessoryViewControllers]
indexOfObject:tabBarController];
+ if (i != NSNotFound) {
+ [super removeTitlebarAccessoryViewControllerAtIndex:i];
+ [tabBarController setLayoutAttribute:layoutAttribute];
+ [super addTitlebarAccessoryViewController:tabBarController];
+ }
}
} else if (autoTitleVisibility == SKWindowTitleHiddenForToolbar) {
[self setTitleVisibility:toolbarIsVisible ? NSWindowTitleHidden :
NSWindowTitleVisible];
@@ -140,7 +153,7 @@
autoTitleVisibility = visibility;
if (autoTitleVisibility)
[self updateForToolbarVisibility:[[self toolbar] isVisible]];
- if (autoTitleVisibility == SKWindowTitleHiddenForTabBar && [[self
titlebarAccessoryViewControllers] count])
+ if (autoTitleVisibility == SKWindowTitleHiddenForTabBar && [self
safeTabBarAccessoryController] && [[self titlebarAccessoryViewControllers]
containsObject:[self safeTabBarAccessoryController]])
[self setTitleVisibility:NSWindowTitleHidden];
}
}
@@ -158,7 +171,7 @@
}
- (void)addTitlebarAccessoryViewController:(NSTitlebarAccessoryViewController
*)childViewController {
- if ([self autoTitleVisibility] == SKWindowTitleHiddenForTabBar) {
+ if ([self autoTitleVisibility] == SKWindowTitleHiddenForTabBar && [self
safeTabBarAccessoryController] == childViewController) {
[self setTitleVisibility:NSWindowTitleHidden];
if ([[self toolbar] isVisible] == NO) {
[childViewController setLayoutAttribute:NSLayoutAttributeTop];
@@ -174,7 +187,7 @@
- (void)removeTitlebarAccessoryViewControllerAtIndex:(NSInteger)index {
[super removeTitlebarAccessoryViewControllerAtIndex:index];
- if ([self autoTitleVisibility] == SKWindowTitleHiddenForTabBar) {
+ if ([self autoTitleVisibility] == SKWindowTitleHiddenForTabBar && [self
safeTabBarAccessoryController] == [[self titlebarAccessoryViewControllers]
objectAtIndex:index]) {
[self setTitleVisibility:NSWindowTitleVisible];
if ([[self toolbar] isVisible] == NO) {
NSURL *url = [self representedURL];
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