diff --git a/src/platform_impl/macos/appkit/mod.rs b/src/platform_impl/macos/appkit/mod.rs index cb7363c8..faebaa30 100644 --- a/src/platform_impl/macos/appkit/mod.rs +++ b/src/platform_impl/macos/appkit/mod.rs @@ -56,7 +56,8 @@ pub(crate) use self::version::NSAppKitVersion; pub(crate) use self::view::{NSTrackingRectTag, NSView}; pub(crate) use self::window::{ NSBackingStoreType, NSWindow, NSWindowButton, NSWindowLevel, NSWindowOcclusionState, - NSWindowOrderingMode, NSWindowSharingType, NSWindowStyleMask, NSWindowTitleVisibility, + NSWindowOrderingMode, NSWindowSharingType, NSWindowStyleMask, NSWindowTabbingMode, + NSWindowTitleVisibility, }; #[link(name = "AppKit", kind = "framework")] diff --git a/src/platform_impl/macos/appkit/window.rs b/src/platform_impl/macos/appkit/window.rs index 4c4fed02..139197a5 100644 --- a/src/platform_impl/macos/appkit/window.rs +++ b/src/platform_impl/macos/appkit/window.rs @@ -89,6 +89,9 @@ extern_methods!( #[sel(setSharingType:)] pub fn setSharingType(&self, sharingType: NSWindowSharingType); + #[sel(setTabbingMode:)] + pub fn setTabbingMode(&self, tabbingMode: NSWindowTabbingMode); + #[sel(setOpaque:)] pub fn setOpaque(&self, opaque: bool); @@ -425,3 +428,16 @@ pub enum NSWindowOrderingMode { unsafe impl Encode for NSWindowOrderingMode { const ENCODING: Encoding = NSInteger::ENCODING; } + +#[allow(dead_code)] +#[repr(isize)] // NSInteger +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] +pub enum NSWindowTabbingMode { + NSWindowTabbingModeAutomatic = 0, + NSWindowTabbingModeDisallowed = 2, + NSWindowTabbingModePreferred = 1, +} + +unsafe impl Encode for NSWindowTabbingMode { + const ENCODING: Encoding = NSInteger::ENCODING; +} diff --git a/src/platform_impl/macos/window.rs b/src/platform_impl/macos/window.rs index 53ea2395..4e8303bb 100644 --- a/src/platform_impl/macos/window.rs +++ b/src/platform_impl/macos/window.rs @@ -48,7 +48,7 @@ use super::appkit::{ NSApp, NSAppKitVersion, NSAppearance, NSApplicationPresentationOptions, NSBackingStoreType, NSColor, NSCursor, NSFilenamesPboardType, NSRequestUserAttentionType, NSResponder, NSScreen, NSView, NSWindow, NSWindowButton, NSWindowLevel, NSWindowSharingType, NSWindowStyleMask, - NSWindowTitleVisibility, + NSWindowTabbingMode, NSWindowTitleVisibility, }; #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -362,6 +362,7 @@ impl WinitWindow { if let Some(identifier) = pl_attrs.tabbing_identifier { this.setTabbingIdentifier(&NSString::from_str(&identifier)); + this.setTabbingMode(NSWindowTabbingMode::NSWindowTabbingModePreferred); } if attrs.content_protected {