diff options
author | 2019-12-03 07:38:03 +0100 | |
---|---|---|
committer | 2019-12-03 07:38:03 +0100 | |
commit | 60b32a9fed67acfd3e3ab8b9aa204853664ffd04 (patch) | |
tree | 1b4b177e0a16fca8be52791a6afb907c8d4ec82d /winit/src | |
parent | ff0dc44cd7847bf6b1754b5f3b4d1ee53377bc49 (diff) | |
parent | 7756081fdbc93aee3f5d11fbd14e3d9f2cbefe57 (diff) | |
download | iced-60b32a9fed67acfd3e3ab8b9aa204853664ffd04.tar.gz iced-60b32a9fed67acfd3e3ab8b9aa204853664ffd04.tar.bz2 iced-60b32a9fed67acfd3e3ab8b9aa204853664ffd04.zip |
Merge pull request #94 from hatoo/improve-setting
Improve window setting
Diffstat (limited to 'winit/src')
-rw-r--r-- | winit/src/application.rs | 36 | ||||
-rw-r--r-- | winit/src/settings/mod.rs (renamed from winit/src/settings.rs) | 14 | ||||
-rw-r--r-- | winit/src/settings/not_windows.rs | 6 | ||||
-rw-r--r-- | winit/src/settings/windows.rs | 9 |
4 files changed, 54 insertions, 11 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index fb40156a..3772a667 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -96,17 +96,31 @@ pub trait Application: Sized { let mut title = application.title(); - let (width, height) = settings.window.size; - - let window = WindowBuilder::new() - .with_title(&title) - .with_inner_size(winit::dpi::LogicalSize { - width: f64::from(width), - height: f64::from(height), - }) - .with_resizable(settings.window.resizable) - .build(&event_loop) - .expect("Open window"); + let window = { + let mut window_builder = WindowBuilder::new(); + + let (width, height) = settings.window.size; + + window_builder = window_builder + .with_title(&title) + .with_inner_size(winit::dpi::LogicalSize { + width: f64::from(width), + height: f64::from(height), + }) + .with_resizable(settings.window.resizable) + .with_decorations(settings.window.decorations); + + #[cfg(target_os = "windows")] + { + use winit::platform::windows::WindowBuilderExtWindows; + + if let Some(parent) = settings.window.platform_specific.parent { + window_builder = window_builder.with_parent_window(parent); + } + } + + window_builder.build(&event_loop).expect("Open window") + }; let dpi = window.hidpi_factor(); let mut size = window.inner_size(); diff --git a/winit/src/settings.rs b/winit/src/settings/mod.rs index d257ecd8..151d73d7 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings/mod.rs @@ -1,5 +1,11 @@ //! Configure your application. +#[cfg_attr(target_os = "windows", path = "windows.rs")] +#[cfg_attr(not(target_os = "windows"), path = "not_windows.rs")] +mod platform; + +pub use platform::PlatformSpecific; + /// The settings of an application. #[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub struct Settings { @@ -17,6 +23,12 @@ pub struct Window { /// Whether the window should be resizable or not. pub resizable: bool, + + /// Whether the window should have a border, a title bar, etc. + pub decorations: bool, + + /// Platform specific settings. + pub platform_specific: platform::PlatformSpecific, } impl Default for Window { @@ -24,6 +36,8 @@ impl Default for Window { Window { size: (1024, 768), resizable: true, + decorations: true, + platform_specific: Default::default(), } } } diff --git a/winit/src/settings/not_windows.rs b/winit/src/settings/not_windows.rs new file mode 100644 index 00000000..5d703f84 --- /dev/null +++ b/winit/src/settings/not_windows.rs @@ -0,0 +1,6 @@ +#![cfg(not(target_os = "windows"))] +//! Platform specific settings for not Windows. + +/// The platform specific window settings of an application. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub struct PlatformSpecific {} diff --git a/winit/src/settings/windows.rs b/winit/src/settings/windows.rs new file mode 100644 index 00000000..76b8d067 --- /dev/null +++ b/winit/src/settings/windows.rs @@ -0,0 +1,9 @@ +#![cfg(target_os = "windows")] +//! Platform specific settings for Windows. + +/// The platform specific window settings of an application. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub struct PlatformSpecific { + /// Parent Window + pub parent: Option<winapi::shared::windef::HWND>, +} |