From dd1135e5996fa5177b318e53b08a4c8d39b14ffd Mon Sep 17 00:00:00 2001 From: Adrian Hupka <6577198+Hupka@users.noreply.github.com> Date: Fri, 3 Jun 2022 16:17:32 +0200 Subject: [PATCH] Add`NSPanel` trait to create NSPanels Intention for PR described here: https://github.com/servo/core-foundation-rs/issues/511 --- cocoa/src/appkit.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/cocoa/src/appkit.rs b/cocoa/src/appkit.rs index d282fd1..d9fd16c 100644 --- a/cocoa/src/appkit.rs +++ b/cocoa/src/appkit.rs @@ -1802,6 +1802,39 @@ impl NSWindow for id { // TODO: Constraint-Based Layouts } +pub trait NSPanel: Sized { + unsafe fn alloc(_: Self) -> id { + msg_send![class!(NSPanel), alloc] + } + + // NSPanel subclasses NSWindow, hence we only add the added methods + // https://developer.apple.com/documentation/appkit/nspanel + unsafe fn setBecomesKeyOnlyIfNeeded(self, becomesKeyOnlyIfNeeded: BOOL); + unsafe fn becomesKeyOnlyIfNeeded(self) -> BOOL; + unsafe fn setFloatingPanel(self, floatingPanel: BOOL); + unsafe fn floatingPanel(self) -> BOOL; +} + +impl NSPanel for id { + // NSPanel subclasses NSWindow, hence we only add the added methods + // https://developer.apple.com/documentation/appkit/nspanel + unsafe fn setBecomesKeyOnlyIfNeeded(self, becomesKeyOnlyIfNeeded: BOOL) { + msg_send![self, setBecomesKeyOnlyIfNeeded: becomesKeyOnlyIfNeeded] + } + + unsafe fn becomesKeyOnlyIfNeeded(self) -> BOOL { + msg_send![self, becomesKeyOnlyIfNeeded] + } + + unsafe fn setFloatingPanel(self, floatingPanel: BOOL) { + msg_send![self, setFloatingPanel: floatingPanel] + } + + unsafe fn floatingPanel(self) -> BOOL { + msg_send![self, isFloatingPanel] + } +} + #[repr(i64)] #[derive(Clone, Copy, Debug, PartialEq)] pub enum NSModalResponse {