mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2025-01-11 21:31:29 +11:00
add hide_application on macos (#1364)
Co-authored-by: Osspial <osspial@gmail.com> Co-authored-by: Bogaevsky <vbogaevsky@gmail.com>
This commit is contained in:
parent
e48262a797
commit
3e3bb8a8f1
|
@ -1,5 +1,6 @@
|
||||||
# Unreleased
|
# Unreleased
|
||||||
|
|
||||||
|
- On macOS, add `hide_application` to `EventLoopWindowTarget` via a new `EventLoopWindowTargetExtMacOS` trait. `hide_application` will hide the entire application by calling `-[NSApplication hide: nil]`.
|
||||||
- On macOS, fix not sending ReceivedCharacter event for specific keys combinations.
|
- On macOS, fix not sending ReceivedCharacter event for specific keys combinations.
|
||||||
- On macOS, fix `CursorMoved` event reporting the cursor position using logical coordinates.
|
- On macOS, fix `CursorMoved` event reporting the cursor position using logical coordinates.
|
||||||
- On macOS, fix issue where unbundled applications would sometimes open without being focused.
|
- On macOS, fix issue where unbundled applications would sometimes open without being focused.
|
||||||
|
|
|
@ -4,6 +4,7 @@ use std::os::raw::c_void;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
dpi::LogicalSize,
|
dpi::LogicalSize,
|
||||||
|
event_loop::{EventLoop, EventLoopWindowTarget},
|
||||||
monitor::MonitorHandle,
|
monitor::MonitorHandle,
|
||||||
window::{Window, WindowBuilder},
|
window::{Window, WindowBuilder},
|
||||||
};
|
};
|
||||||
|
@ -209,3 +210,17 @@ impl MonitorHandleExtMacOS for MonitorHandle {
|
||||||
self.inner.ns_screen().map(|s| s as *mut c_void)
|
self.inner.ns_screen().map(|s| s as *mut c_void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Additional methods on `EventLoopWindowTarget` that are specific to macOS.
|
||||||
|
pub trait EventLoopWindowTargetExtMacOS {
|
||||||
|
/// Hide the entire application. In most applications this is typically triggered with Command-H.
|
||||||
|
fn hide_application(&self);
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> EventLoopWindowTargetExtMacOS for EventLoopWindowTarget<T> {
|
||||||
|
fn hide_application(&self) {
|
||||||
|
let cls = objc::runtime::Class::get("NSApplication").unwrap();
|
||||||
|
let app: cocoa::base::id = unsafe { msg_send![cls, sharedApplication] };
|
||||||
|
unsafe { msg_send![app, hide: 0] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue