diff options
author | Eduard Bopp <eduard.bopp@aepsil0n.de> | 2015-03-25 13:17:47 +0100 |
---|---|---|
committer | Eduard Bopp <eduard.bopp@aepsil0n.de> | 2015-03-25 13:17:47 +0100 |
commit | 77d033d672d5bcd6e3e933da682467e53414e934 (patch) | |
tree | 29c29818b0d3ab4374f89687e038ef57cb732aea | |
parent | 18f9bc44c9c71d6d368a9e9255c1288b85ae509a (diff) | |
download | glutin-77d033d672d5bcd6e3e933da682467e53414e934.tar.gz glutin-77d033d672d5bcd6e3e933da682467e53414e934.zip |
Add an example for (un-)grabbing the mouse cursor
-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"); + } + }, + _ => (), + } + + } + + } +} + |