diff --git a/examples/hello_world.rs b/examples/hello_world.rs index 3af32d6..831e43f 100644 --- a/examples/hello_world.rs +++ b/examples/hello_world.rs @@ -1,12 +1,13 @@ extern crate cocoa; -use cocoa::base::{selector, nil, YES, NO}; +use cocoa::base::{selector, nil, NO}; use cocoa::foundation::{NSUInteger, NSRect, NSPoint, NSSize, NSAutoreleasePool, NSProcessInfo, NSString}; use cocoa::appkit::{NSApp, NSApplication, NSApplicationActivationPolicyRegular, NSWindow, NSTitledWindowMask, NSBackingStoreBuffered, - NSMenu, NSMenuItem}; + NSMenu, NSMenuItem, NSRunningApplication, + NSApplicationActivateIgnoringOtherApps}; fn main() { unsafe { @@ -49,8 +50,8 @@ fn main() { let title = NSString::alloc(nil).init_str("Hello World!"); window.setTitle_(title); window.makeKeyAndOrderFront_(nil); - - app.activateIgnoringOtherApps_(YES); + let current_app = NSRunningApplication::currentApplication(nil); + current_app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps); app.run(); } } diff --git a/src/appkit.rs b/src/appkit.rs index b7afaf6..b4cf9a0 100644 --- a/src/appkit.rs +++ b/src/appkit.rs @@ -18,6 +18,7 @@ pub use core_graphics::base::CGFloat; pub use core_graphics::geometry::CGPoint; pub use self::NSApplicationActivationPolicy::*; +pub use self::NSApplicationActivationOptions::*; pub use self::NSWindowMask::*; pub use self::NSBackingStoreType::*; pub use self::NSOpenGLPixelFormatAttribute::*; @@ -69,6 +70,12 @@ pub enum NSApplicationActivationPolicy { NSApplicationActivationPolicyERROR = -1 } +#[repr(u64)] +pub enum NSApplicationActivationOptions { + NSApplicationActivateAllWindows = 1 << 0, + NSApplicationActivateIgnoringOtherApps = 1 << 1 +} + #[repr(u64)] pub enum NSApplicationTerminateReply { NSTerminateCancel = 0, @@ -287,6 +294,19 @@ impl NSApplication for id { } } +pub trait NSRunningApplication { + unsafe fn currentApplication(_: Self) -> id { + msg_send![class("NSRunningApplication"), currentApplication] + } + unsafe fn activateWithOptions_(self, options: NSApplicationActivationOptions) -> BOOL; +} + +impl NSRunningApplication for id { + unsafe fn activateWithOptions_(self, options: NSApplicationActivationOptions) -> BOOL { + msg_send![self, activateWithOptions:options as NSUInteger] + } +} + pub trait NSMenu { unsafe fn new(_: Self) -> id { msg_send![class("NSMenu"), new]