diff options
author | 2021-08-11 20:15:49 +0700 | |
---|---|---|
committer | 2021-08-11 20:15:49 +0700 | |
commit | 3d640632f124294218442b2494282603a6f2919c (patch) | |
tree | bb4881a08b483bca5b356f8d2c1aac7c454c8352 | |
parent | 45778ed598c0d202f8e86c47a444fd671fb3abce (diff) | |
parent | 7337ab63bc9e167116f8adbfedb5a8e8203a4a5b (diff) | |
download | iced-3d640632f124294218442b2494282603a6f2919c.tar.gz iced-3d640632f124294218442b2494282603a6f2919c.tar.bz2 iced-3d640632f124294218442b2494282603a6f2919c.zip |
Merge pull request #599 from oknozor/wayland-app-id
Add wayland app_id
-rw-r--r-- | glutin/src/application.rs | 1 | ||||
-rw-r--r-- | src/settings.rs | 13 | ||||
-rw-r--r-- | winit/src/application.rs | 1 | ||||
-rw-r--r-- | winit/src/settings.rs | 23 |
4 files changed, 36 insertions, 2 deletions
diff --git a/glutin/src/application.rs b/glutin/src/application.rs index 7ed6315d..4a5f4bd2 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -58,6 +58,7 @@ where &application.title(), application.mode(), event_loop.primary_monitor(), + settings.id, ) .with_menu(Some(conversion::menu(&application.menu()))); diff --git a/src/settings.rs b/src/settings.rs index 480bf813..d726dc4f 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -4,12 +4,18 @@ use crate::window; /// The settings of an application. #[derive(Debug, Clone)] pub struct Settings<Flags> { + /// The identifier of the application. + /// + /// If provided, this identifier may be used to identify the application or + /// communicate with it through the windowing system. + pub id: Option<String>, + /// The window settings. /// /// They will be ignored on the Web. pub window: window::Settings, - /// The data needed to initialize an [`Application`]. + /// The data needed to initialize the [`Application`]. /// /// [`Application`]: crate::Application pub flags: Flags, @@ -58,6 +64,7 @@ impl<Flags> Settings<Flags> { Self { flags, + id: default_settings.id, window: default_settings.window, default_font: default_settings.default_font, default_text_size: default_settings.default_text_size, @@ -74,8 +81,9 @@ where { fn default() -> Self { Self { - flags: Default::default(), + id: None, window: Default::default(), + flags: Default::default(), default_font: Default::default(), default_text_size: 20, text_multithreading: false, @@ -89,6 +97,7 @@ where impl<Flags> From<Settings<Flags>> for iced_winit::Settings<Flags> { fn from(settings: Settings<Flags>) -> iced_winit::Settings<Flags> { iced_winit::Settings { + id: settings.id, window: settings.window.into(), flags: settings.flags, exit_on_close_request: settings.exit_on_close_request, diff --git a/winit/src/application.rs b/winit/src/application.rs index 1d32a5f3..c43eed11 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -152,6 +152,7 @@ where &application.title(), application.mode(), event_loop.primary_monitor(), + settings.id, ) .with_menu(Some(conversion::menu(&application.menu()))) .build(&event_loop) diff --git a/winit/src/settings.rs b/winit/src/settings.rs index 743f79bc..72a1a24a 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -16,6 +16,12 @@ use winit::window::WindowBuilder; /// The settings of an application. #[derive(Debug, Clone, Default)] pub struct Settings<Flags> { + /// The identifier of the application. + /// + /// If provided, this identifier may be used to identify the application or + /// communicate with it through the windowing system. + pub id: Option<String>, + /// The [`Window`] settings pub window: Window, @@ -70,6 +76,7 @@ impl Window { title: &str, mode: Mode, primary_monitor: Option<MonitorHandle>, + _id: Option<String>, ) -> WindowBuilder { let mut window_builder = WindowBuilder::new(); @@ -103,6 +110,21 @@ impl Window { .with_max_inner_size(winit::dpi::LogicalSize { width, height }); } + #[cfg(any( + target_os = "linux", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "netbsd", + target_os = "openbsd" + ))] + { + use ::winit::platform::unix::WindowBuilderExtUnix; + + if let Some(id) = _id { + window_builder = window_builder.with_app_id(id); + } + } + #[cfg(target_os = "windows")] { use winit::platform::windows::WindowBuilderExtWindows; @@ -110,6 +132,7 @@ impl Window { if let Some(parent) = self.platform_specific.parent { window_builder = window_builder.with_parent_window(parent); } + window_builder = window_builder .with_drag_and_drop(self.platform_specific.drag_and_drop); } |