Reputation: 5193
I've got an app that uses a Toolbar in a NSWindow. I don't want users to be able to customize this toolbar for aesthetic reasons. In Sierra there's a new Menu option that gets inserted into "Menu > View" called Show Tab Bar
. How do I disable this? Enabling it only seems to increase the tool bar's height as I don't have extra labels showing under the icons.
Upvotes: 20
Views: 6011
Reputation: 5193
On 10.12, you need to now set the following when the window is created as Tab Bar is now available by default:
[NSWindow setAllowsAutomaticWindowTabbing: NO];
The answer is the same in Swift and SwiftUI
func applicationWillFinishLaunching(_ notification: Notification) {
NSWindow.allowsAutomaticWindowTabbing = false
}
Note that the call is made on the class NSWindow
not on an instance of NSWindow
Upvotes: 18
Reputation: 6070
Swift 5
In your NSWindowController
:
self.window?.tabbingMode = .disallowed
Upvotes: 4
Reputation: 2245
Swift solution:
override func awakeFromNib() {
super.awakeFromNib()
if #available(OSX 10.12, *) {
tabbingMode = .disallowed
}
}
Upvotes: 4
Reputation: 8395
To disable tabbing on individual windows call setTabbingMode:
if([window respondsToSelector:@selector(setTabbingMode:)]) {
// this particular window doesn't support tabbing in Sierra.
[window setTabbingMode:NSWindowTabbingModeDisallowed];
}
Upvotes: 5
Reputation: 9141
If you don't want to compile against the latest frameworks, you can use the following code in your NSWindowsController sub classes:
Swift:
override func awakeFromNib() {
if NSAppKitVersionNumber > 1500 {
self.window?.setValue(2, forKey: "tabbingMode")
}
}
Objective-C:
- (void)awakeFromNib {
if (NSAppKitVersionNumber > 1500) {
[self.window setValue:[NSNumber numberWithInt:2] forKey:@"tabbingMode"];
}
}
Upvotes: 4