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.
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
allowsAutomaticWindowTabbing
on an instance of a window rather than on NSWindow the class. In swift and swiftui you can still call NSWindow.allowsAutomaticWindowTabbing = false
to remove these items entirely in all app windows rather than disabling them for individual windows. –
Topside window.tabbingMode = NSWindowTabbingModeDisallowed
–
Fescennine 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
tabbingMode
of the window to .disallowed
. Specifically adding window.tabbingMode = .disallowed
to the applicationDidFinishLaunching
method of the NSApplicationDelegate
seems to work. –
Seamy allowsAutomaticWindowTabbing
on an instance of a window rather than on NSWindow the class. In swift and swiftui you can still call NSWindow.allowsAutomaticWindowTabbing = false
to remove these items entirely in all app windows rather than disabling them for individual windows. –
Topside 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];
}
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"];
}
}
NSAppKitVersion.current.rawValue > NSAppKitVersion.macOS10_12.rawValue
with Swift 4 –
Roslynrosmarin Swift solution:
override func awakeFromNib() {
super.awakeFromNib()
if #available(OSX 10.12, *) {
tabbingMode = .disallowed
}
}
window.tabbingMode = .disallowed
after the NSWindow has been created. –
Seamy Swift 5
In your NSWindowController
:
self.window?.tabbingMode = .disallowed
© 2022 - 2024 — McMap. All rights reserved.
tabbingMode
of the window to.disallowed
. Specifically addingwindow.tabbingMode = .disallowed
to theapplicationDidFinishLaunching
method of theNSApplicationDelegate
seems to work. – Seamy