From 47d18781b67197898f28f649aaec69e8564875d9 Mon Sep 17 00:00:00 2001 From: iceiix <43691553+iceiix@users.noreply.github.com> Date: Tue, 20 Nov 2018 19:42:36 -0800 Subject: [PATCH] Add toggling full screen mode with F11 hotkey (#31) * Detect when F11 is pressed * Change mutability of window in handle_window_event() * Toggle fullscreen between Desktop and Off --- src/main.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index a581d262..d4f22f3c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -168,7 +168,7 @@ fn main() { let sdl = sdl2::init().unwrap(); let sdl_video = sdl.video().unwrap(); - let window = sdl2::video::WindowBuilder::new(&sdl_video, "Steven", 854, 480) + let mut window = sdl2::video::WindowBuilder::new(&sdl_video, "Steven", 854, 480) .opengl() .resizable() .build() @@ -262,12 +262,12 @@ fn main() { window.gl_swap_window(); for event in events.poll_iter() { - handle_window_event(&window, &mut game, &mut ui_container, event); + handle_window_event(&mut window, &mut game, &mut ui_container, event); } } } -fn handle_window_event(window: &sdl2::video::Window, +fn handle_window_event(window: &mut sdl2::video::Window, game: &mut Game, ui_container: &mut ui::Container, event: sdl2::event::Event) { @@ -346,6 +346,15 @@ fn handle_window_event(window: &sdl2::video::Window, Event::KeyDown{keycode: Some(Keycode::Backquote), ..} => { game.console.lock().unwrap().toggle(); } + Event::KeyDown{keycode: Some(Keycode::F11), ..} => { // TODO: configurable binding in settings::Stevenkey + let state = match window.fullscreen_state() { + sdl2::video::FullscreenType::Off => sdl2::video::FullscreenType::Desktop, + sdl2::video::FullscreenType::True => sdl2::video::FullscreenType::Off, + sdl2::video::FullscreenType::Desktop => sdl2::video::FullscreenType::Off, + }; + + window.set_fullscreen(state).expect(&format!("failed to set fullscreen to {:?}", state)); + } Event::KeyDown{keycode: Some(key), keymod, ..} => { if game.focused { if let Some(steven_key) = settings::Stevenkey::get_by_keycode(key, &game.vars) {