diff options
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>, +} | 
