diff options
author | tomaka <pierre.krieger1708@gmail.com> | 2015-03-26 16:48:40 +0100 |
---|---|---|
committer | tomaka <pierre.krieger1708@gmail.com> | 2015-03-26 16:48:40 +0100 |
commit | d6ebaaaf5cbb1839e74c3c7c0573b1f842c59e6b (patch) | |
tree | 1e09474e9664d06ca0bb5539afe849348bba8c51 /examples | |
parent | 506c2bca27abbdec446a6683c665025ba4350ae8 (diff) | |
parent | 77d033d672d5bcd6e3e933da682467e53414e934 (diff) | |
download | glutin-d6ebaaaf5cbb1839e74c3c7c0573b1f842c59e6b.tar.gz glutin-d6ebaaaf5cbb1839e74c3c7c0573b1f842c59e6b.zip |
Merge pull request #227 from aepsil0n/grab-cursor
Implement grabbing of the mouse pointer for X11
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"); + } + }, + _ => (), + } + + } + + } +} + |