From 11a44081df97b82108be63a925d8c479bddfdc4d Mon Sep 17 00:00:00 2001 From: Mads Marquart <mads@marquart.dk> Date: Wed, 1 Dec 2021 12:20:56 +0100 Subject: [PATCH] macOS move impl details of `platform` into `platform_impl` --- src/platform/macos.rs | 8 ++------ src/platform/windows.rs | 4 +--- src/platform_impl/macos/event_loop.rs | 14 ++++++++++++++ src/platform_impl/windows/window.rs | 5 +++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/platform/macos.rs b/src/platform/macos.rs index 6e7d9a59..55a13a0f 100644 --- a/src/platform/macos.rs +++ b/src/platform/macos.rs @@ -241,14 +241,10 @@ pub trait EventLoopWindowTargetExtMacOS { 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] } + self.p.hide_application() } 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] } + self.p.hide_other_applications() } } diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 7df4cced..3499ba77 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -112,9 +112,7 @@ impl WindowExtWindows for Window { #[inline] fn set_enable(&self, enabled: bool) { - unsafe { - winapi::um::winuser::EnableWindow(self.hwnd() as _, enabled as _); - } + self.window.set_enable(enabled) } #[inline] diff --git a/src/platform_impl/macos/event_loop.rs b/src/platform_impl/macos/event_loop.rs index 7c5ceaeb..5ee8fbcb 100644 --- a/src/platform_impl/macos/event_loop.rs +++ b/src/platform_impl/macos/event_loop.rs @@ -85,6 +85,20 @@ impl<T: 'static> EventLoopWindowTarget<T> { } } +impl<T> EventLoopWindowTarget<T> { + pub(crate) 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] } + } + + pub(crate) 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] } + } +} + pub struct EventLoop<T: 'static> { pub(crate) delegate: IdRef, diff --git a/src/platform_impl/windows/window.rs b/src/platform_impl/windows/window.rs index 81af6c4b..7809cf97 100644 --- a/src/platform_impl/windows/window.rs +++ b/src/platform_impl/windows/window.rs @@ -564,6 +564,11 @@ impl Window { self.window_state.lock().window_icon = window_icon; } + #[inline] + pub fn set_enable(&self, enabled: bool) { + unsafe { winuser::EnableWindow(self.hwnd() as _, enabled as _) }; + } + #[inline] pub fn set_taskbar_icon(&self, taskbar_icon: Option<Icon>) { if let Some(ref taskbar_icon) = taskbar_icon {