diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/grabbing.rs | 50 | 
1 files changed, 50 insertions, 0 deletions
| diff --git a/examples/grabbing.rs b/examples/grabbing.rs new file mode 100644 index 0000000..436dd9b --- /dev/null +++ b/examples/grabbing.rs @@ -0,0 +1,50 @@ +#[cfg(target_os = "android")] +#[macro_use] +extern crate android_glue; + +extern crate glutin; + +use glutin::{Event, ElementState}; + +mod support; + +#[cfg(target_os = "android")] +android_start!(main); + +#[cfg(not(feature = "window"))] +fn main() { println!("This example requires glutin to be compiled with the `window` feature"); } + +#[cfg(feature = "window")] +fn main() { +     +    let window = glutin::Window::new().unwrap(); +    window.set_title("glutin - Cursor grabbing test"); +    unsafe { window.make_current() }; + +    let context = support::load(&window); +    let mut grabbed = false; +     +    while !window.is_closed() { +        context.draw_frame((0.0, 1.0, 0.0, 1.0)); +        window.swap_buffers(); + +        for event in window.poll_events() { +            match event { +                Event::KeyboardInput(ElementState::Pressed, _, _) => { +                    if grabbed { +                        grabbed = false; +                        window.ungrab_cursor(); +                    } +                    else { +                        grabbed = true; +                        window.grab_cursor().ok().expect("could not grab mouse cursor"); +                    } +                }, +                _ => (), +            } +             +        } +         +    } +} + | 
