diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/window.rs | 15 | ||||
| -rw-r--r-- | src/window_controller.rs | 1 | 
2 files changed, 15 insertions, 1 deletions
| diff --git a/src/window.rs b/src/window.rs index 1949387..882d0b8 100644 --- a/src/window.rs +++ b/src/window.rs @@ -3,7 +3,7 @@ use crate::*;  use buffer::HasDimensions;  use winit::dpi::{Size, PhysicalSize};  use winit::event_loop::EventLoopWindowTarget; -use winit::window::WindowId; +use winit::window::{Fullscreen, WindowId};  pub struct Window {      pub controller: Box<dyn WindowController>, @@ -86,6 +86,19 @@ impl Window {      /// alter any buffer sizes or struct fields. When the window size eventually      /// changes, the state updates are handled by `resize_buffer_and_surface`.      pub fn update_window_size(&mut self) { +        let fullscreen = self.controller.fullscreen(); +        if fullscreen != self.window.fullscreen().is_some() { +            if fullscreen { +                if let Some(monitor) = self.window.current_monitor() { +                    if let Some(mode) = monitor.video_modes().nth(0) { +                        self.window.set_fullscreen(Some(Fullscreen::Exclusive(mode))); +                    } +                }; +            } else { +                self.window.set_fullscreen(None); +            } +        } +          let pixel_scale = self.controller.pixel_scale().get();          if let Some(dimensions) = self.controller.exact_size() {              // Without this early return, the constant re-setting of the window diff --git a/src/window_controller.rs b/src/window_controller.rs index c655d5d..fe23f53 100644 --- a/src/window_controller.rs +++ b/src/window_controller.rs @@ -10,6 +10,7 @@ pub trait WindowController {      fn minimum_size(&self) -> Option<Dimensions> { None }      fn maximum_size(&self) -> Option<Dimensions> { None }      fn exact_size(&self) -> Option<Dimensions> { None } +    fn fullscreen(&self) -> bool { false }      fn pixel_scale(&self) -> NonZeroU32 { NON_ZERO_ONE }      fn cursor_icon(&mut self) -> Option<CursorIcon> { None } | 
