diff options
author | 2023-02-23 14:33:53 +0100 | |
---|---|---|
committer | 2023-03-14 11:31:15 +0100 | |
commit | ed7b61380473c7c88c25b5d4d17112b844a9364d (patch) | |
tree | b6c0c11ee9e476a53c8aa0abede1ede7197ca559 /src | |
parent | de4ae51e3cc30dc2ee1db1686b98a709f9552f80 (diff) | |
download | iced-ed7b61380473c7c88c25b5d4d17112b844a9364d.tar.gz iced-ed7b61380473c7c88c25b5d4d17112b844a9364d.tar.bz2 iced-ed7b61380473c7c88c25b5d4d17112b844a9364d.zip |
Added macOS platform specific options
Diffstat (limited to 'src')
-rw-r--r-- | src/window.rs | 2 | ||||
-rw-r--r-- | src/window/settings.rs | 18 | ||||
-rw-r--r-- | src/window/settings/macos.rs | 20 | ||||
-rw-r--r-- | src/window/settings/other.rs | 9 |
4 files changed, 47 insertions, 2 deletions
diff --git a/src/window.rs b/src/window.rs index 5a199580..aba4bce8 100644 --- a/src/window.rs +++ b/src/window.rs @@ -6,6 +6,6 @@ pub mod icon; pub use icon::Icon; pub use position::Position; -pub use settings::Settings; +pub use settings::{PlatformSpecific, Settings}; pub use crate::runtime::window::*; diff --git a/src/window/settings.rs b/src/window/settings.rs index 24d0f4f9..a039e213 100644 --- a/src/window/settings.rs +++ b/src/window/settings.rs @@ -1,5 +1,15 @@ use crate::window::{Icon, Position}; +#[cfg(target_os = "macos")] +#[path = "settings/macos.rs"] +mod platform; + +#[cfg(not(target_os = "macos"))] +#[path = "settings/other.rs"] +mod platform; + +pub use platform::PlatformSpecific; + /// The window settings of an application. #[derive(Debug, Clone)] pub struct Settings { @@ -32,6 +42,9 @@ pub struct Settings { /// The icon of the window. pub icon: Option<Icon>, + + /// Platform specific settings. + pub platform_specific: platform::PlatformSpecific, } impl Default for Settings { @@ -47,6 +60,7 @@ impl Default for Settings { transparent: false, always_on_top: false, icon: None, + platform_specific: Default::default(), } } } @@ -64,7 +78,9 @@ impl From<Settings> for iced_winit::settings::Window { transparent: settings.transparent, always_on_top: settings.always_on_top, icon: settings.icon.map(Icon::into), - platform_specific: Default::default(), + platform_specific: iced_winit::settings::PlatformSpecific::from( + settings.platform_specific, + ), } } } diff --git a/src/window/settings/macos.rs b/src/window/settings/macos.rs new file mode 100644 index 00000000..c08020cf --- /dev/null +++ b/src/window/settings/macos.rs @@ -0,0 +1,20 @@ +/// The platform specific window settings of an application. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub struct PlatformSpecific { + /// Hides the window title. + pub title_hidden: bool, + /// Makes the titlebar transparent and allows the content to appear behind it. + pub titlebar_transparent: bool, + /// Makes the window content appear behind the titlebar. + pub fullsize_content_view: bool, +} + +impl From<PlatformSpecific> for iced_winit::settings::PlatformSpecific { + fn from(platform_specific: PlatformSpecific) -> Self { + Self { + title_hidden: platform_specific.title_hidden, + titlebar_transparent: platform_specific.titlebar_transparent, + fullsize_content_view: platform_specific.fullsize_content_view, + } + } +} diff --git a/src/window/settings/other.rs b/src/window/settings/other.rs new file mode 100644 index 00000000..943d9f0d --- /dev/null +++ b/src/window/settings/other.rs @@ -0,0 +1,9 @@ +/// The platform specific window settings of an application. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub struct PlatformSpecific; + +impl From<PlatformSpecific> for iced_winit::settings::PlatformSpecific { + fn from(_: PlatformSpecific) -> Self { + Default::default() + } +} |