summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Casper Storm <casper.storm@lich.io>2023-02-23 14:33:53 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-14 11:31:15 +0100
commited7b61380473c7c88c25b5d4d17112b844a9364d (patch)
treeb6c0c11ee9e476a53c8aa0abede1ede7197ca559 /src
parentde4ae51e3cc30dc2ee1db1686b98a709f9552f80 (diff)
downloadiced-ed7b61380473c7c88c25b5d4d17112b844a9364d.tar.gz
iced-ed7b61380473c7c88c25b5d4d17112b844a9364d.tar.bz2
iced-ed7b61380473c7c88c25b5d4d17112b844a9364d.zip
Added macOS platform specific options
Diffstat (limited to 'src')
-rw-r--r--src/window.rs2
-rw-r--r--src/window/settings.rs18
-rw-r--r--src/window/settings/macos.rs20
-rw-r--r--src/window/settings/other.rs9
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()
+ }
+}