Print some window events
[kaka/rust-sdl-test.git] / src / main.rs
index 7216479..d474fd6 100644 (file)
@@ -13,6 +13,7 @@ use sdl2::pixels::Color;
 use sdl2::rect::Rect;
 use sdl2::render::BlendMode;
 use sdl2::render::Canvas;
+use sdl2::video::FullscreenType;
 use sdl2::video::Window;
 use time::PreciseTime;
 
@@ -21,6 +22,7 @@ use common::Point2D;
 use sprites::SpriteManager;
 use sdl2::video::WindowContext;
 use sdl2::render::TextureCreator;
+use sdl2::event::WindowEvent;
 
 #[macro_use] mod common;
 mod boll;
@@ -118,8 +120,10 @@ fn main() {
                     break 'running;
                 }
                 Event::KeyDown { keycode: Some(Keycode::F11), .. } => {
-                    canvas.window_mut()
-                        .set_fullscreen(sdl2::video::FullscreenType::True).unwrap();
+                    match canvas.window().fullscreen_state() {
+                        FullscreenType::Off => canvas.window_mut().set_fullscreen(FullscreenType::Desktop),
+                        _                   => canvas.window_mut().set_fullscreen(FullscreenType::Off)
+                    }.unwrap();
                 }
                 Event::KeyDown { keycode: Some(Keycode::KpPlus), .. } => { boll_size = std::cmp::min(boll_size + 1, 32) }
                 Event::KeyDown { keycode: Some(Keycode::KpMinus), .. } => { boll_size = std::cmp::max(boll_size - 1, 1) }
@@ -129,6 +133,13 @@ fn main() {
                         point!(0.0, 0.0),
                     )))
                 }
+                Event::Window { win_event: WindowEvent::Resized(x, y), .. } => { println!("window resized({}, {})", x, y) }
+                Event::Window { win_event: WindowEvent::Maximized, .. } => { println!("window maximized") }
+                Event::Window { win_event: WindowEvent::Restored, .. } => { println!("window restored") }
+                Event::Window { win_event: WindowEvent::Enter, .. } => { println!("window enter") }
+                Event::Window { win_event: WindowEvent::Leave, .. } => { println!("window leave") }
+                Event::Window { win_event: WindowEvent::FocusGained, .. } => { println!("window focus gained") }
+                Event::Window { win_event: WindowEvent::FocusLost, .. } => { println!("window focus lost") }
                 _ => {}
             }
         }