diff --git a/src/lib.rs b/src/lib.rs index cf605faf..2ca8e9fd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -364,16 +364,6 @@ pub enum FullScreenState { Exclusive(MonitorId), } -impl FullScreenState { - pub fn get_monitor(&self) -> Option { - if let FullScreenState::Exclusive(ref monitor) = *self { - Some(monitor.0.clone()) - } else { - None - } - } -} - /// Describes how winit handles the cursor. #[derive(Debug, Copy, Clone, PartialEq)] pub enum CursorState { diff --git a/src/platform/linux/wayland/window.rs b/src/platform/linux/wayland/window.rs index 98e56e0e..95ea44a8 100644 --- a/src/platform/linux/wayland/window.rs +++ b/src/platform/linux/wayland/window.rs @@ -4,8 +4,10 @@ use std::sync::atomic::AtomicBool; use wayland_client::{EventQueue, EventQueueHandle, Proxy}; use wayland_client::protocol::{wl_display,wl_surface}; -use {CreationError, MouseCursor, CursorState, WindowAttributes}; +use {CreationError, MouseCursor, CursorState, WindowAttributes, FullScreenState}; use platform::MonitorId as PlatformMonitorId; +use window::MonitorId as RootMonitorId; +use super::context::MonitorId as WaylandMonitorId; use super::{WaylandContext, EventsLoop}; use super::wayland_window; @@ -54,7 +56,7 @@ impl Window { *(decorated.handler()) = Some(DecoratedHandler::new()); // set fullscreen if necessary - if let Some(PlatformMonitorId::Wayland(ref monitor_id)) = attributes.fullscreen.get_monitor() { + if let FullScreenState::Exclusive(RootMonitorId(PlatformMonitorId::Wayland(ref monitor_id))) = attributes.fullscreen { ctxt.with_output(monitor_id.clone(), |output| { decorated.set_fullscreen(Some(output)) }); diff --git a/src/platform/macos/window.rs b/src/platform/macos/window.rs index f6131d43..98c64d77 100644 --- a/src/platform/macos/window.rs +++ b/src/platform/macos/window.rs @@ -384,8 +384,8 @@ impl Window { fn create_window(attrs: &WindowAttributes) -> Option { unsafe { - let screen = match attrs.fullscreen.get_monitor() { - Some(ref monitor_id) => { + let screen = match attrs.fullscreen { + FullScreenState::Exclusive(ref monitor_id) => { let native_id = match monitor_id.get_native_identifier() { NativeMonitorId::Numeric(num) => num, _ => panic!("OS X monitors should always have a numeric native ID") @@ -411,7 +411,7 @@ impl Window { }; Some(matching_screen.unwrap_or(appkit::NSScreen::mainScreen(nil))) }, - None => None + _ => None, }; let frame = match screen { Some(screen) => appkit::NSScreen::frame(screen), diff --git a/src/platform/windows/window.rs b/src/platform/windows/window.rs index 89221ade..e98f6a8b 100644 --- a/src/platform/windows/window.rs +++ b/src/platform/windows/window.rs @@ -21,6 +21,7 @@ use CursorState; use MouseCursor; use WindowAttributes; use FullScreenState; +use MonitorId as RootMonitorId; use dwmapi; use kernel32; @@ -328,12 +329,13 @@ unsafe fn init(window: WindowAttributes, pl_attribs: PlatformSpecificWindowBuild // switching to fullscreen if necessary // this means adjusting the window's position so that it overlaps the right monitor, // and change the monitor's resolution if necessary - if let Some(ref monitor) = window.fullscreen.get_monitor() { + let fullscreen = if let FullScreenState::Exclusive(RootMonitorId(ref monitor)) = window.fullscreen { try!(switch_to_fullscreen(&mut rect, monitor)); + true + } else { + false }; - let fullscreen = window.fullscreen.get_monitor().is_some(); - // computing the style and extended style of the window let (ex_style, style) = if fullscreen || !window.decorations { (winapi::WS_EX_APPWINDOW, diff --git a/src/window.rs b/src/window.rs index 19ebc753..7e046e22 100644 --- a/src/window.rs +++ b/src/window.rs @@ -108,7 +108,7 @@ impl WindowBuilder { pub fn build(mut self, events_loop: &EventsLoop) -> Result { // resizing the window to the dimensions of the monitor when fullscreen if self.window.dimensions.is_none() { - if let Some(monitor) = self.window.fullscreen.get_monitor() { + if let FullScreenState::Exclusive(ref monitor) = self.window.fullscreen { self.window.dimensions = Some(monitor.get_dimensions()); } }