diff --git a/CHANGELOG.md b/CHANGELOG.md index d15294b985..279905d623 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - On Web, prevent the webpage from scrolling when the user is focused on a winit canvas - On Wayland, fix deadlock when calling to `set_inner_size` from a callback. +- On macOS, add `hide__other_applications` to `EventLoopWindowTarget` via existing `EventLoopWindowTargetExtMacOS` trait. `hide_other_applications` will hide other applications by calling `-[NSApplication hideOtherApplications: nil]`. # 0.22.2 (2020-05-16) diff --git a/src/platform/macos.rs b/src/platform/macos.rs index b275c7538d..f07e2f6e77 100644 --- a/src/platform/macos.rs +++ b/src/platform/macos.rs @@ -215,6 +215,8 @@ impl MonitorHandleExtMacOS for MonitorHandle { pub trait EventLoopWindowTargetExtMacOS { /// Hide the entire application. In most applications this is typically triggered with Command-H. fn hide_application(&self); + /// Hide the other applications. In most applications this is typically triggered with Command+Option-H. + fn hide_other_applications(&self); } impl EventLoopWindowTargetExtMacOS for EventLoopWindowTarget { @@ -223,4 +225,10 @@ impl EventLoopWindowTargetExtMacOS for EventLoopWindowTarget { let app: cocoa::base::id = unsafe { msg_send![cls, sharedApplication] }; unsafe { msg_send![app, hide: 0] } } + + fn hide_other_applications(&self) { + let cls = objc::runtime::Class::get("NSApplication").unwrap(); + let app: cocoa::base::id = unsafe { msg_send![cls, sharedApplication] }; + unsafe { msg_send![app, hideOtherApplications: 0] } + } }