winit-sonoma-fix/examples/cursor.rs

39 lines
2.1 KiB
Rust
Raw Normal View History

2016-03-27 04:07:52 +11:00
extern crate winit;
use winit::{Event, ElementState, MouseCursor, WindowEvent, KeyboardInput, ControlFlow};
2015-12-27 01:38:00 +11:00
fn main() {
let mut events_loop = winit::EventsLoop::new();
2017-01-29 01:45:01 +11:00
let window = winit::WindowBuilder::new().build(&events_loop).unwrap();
2015-12-27 01:38:00 +11:00
window.set_title("A fantastic window!");
let cursors = [MouseCursor::Default, MouseCursor::Crosshair, MouseCursor::Hand, MouseCursor::Arrow, MouseCursor::Move, MouseCursor::Text, MouseCursor::Wait, MouseCursor::Help, MouseCursor::Progress, MouseCursor::NotAllowed, MouseCursor::ContextMenu, MouseCursor::NoneCursor, MouseCursor::Cell, MouseCursor::VerticalText, MouseCursor::Alias, MouseCursor::Copy, MouseCursor::NoDrop, MouseCursor::Grab, MouseCursor::Grabbing, MouseCursor::AllScroll, MouseCursor::ZoomIn, MouseCursor::ZoomOut, MouseCursor::EResize, MouseCursor::NResize, MouseCursor::NeResize, MouseCursor::NwResize, MouseCursor::SResize, MouseCursor::SeResize, MouseCursor::SwResize, MouseCursor::WResize, MouseCursor::EwResize, MouseCursor::NsResize, MouseCursor::NeswResize, MouseCursor::NwseResize, MouseCursor::ColResize, MouseCursor::RowResize];
let mut cursor_idx = 0;
2015-12-27 01:38:00 +11:00
if cfg!(target_os = "linux") {
println!("Running this example under wayland may not display a window at all.\n\
This is normal and because this example does not actually draw anything in the window,\
thus the compositor does not display it.");
}
2017-01-29 01:45:01 +11:00
events_loop.run_forever(|event| {
2015-06-16 21:48:08 +10:00
match event {
Event::WindowEvent { event: WindowEvent::KeyboardInput { input: KeyboardInput { state: ElementState::Pressed, .. }, .. }, .. } => {
2015-06-16 21:48:08 +10:00
println!("Setting cursor to \"{:?}\"", cursors[cursor_idx]);
window.set_cursor(cursors[cursor_idx]);
if cursor_idx < cursors.len() - 1 {
cursor_idx += 1;
} else {
cursor_idx = 0;
}
},
2017-01-29 01:45:01 +11:00
Event::WindowEvent { event: WindowEvent::Closed, .. } => {
return ControlFlow::Break;
2017-01-29 01:45:01 +11:00
},
_ => ()
2015-06-16 21:48:08 +10:00
}
ControlFlow::Continue
2017-01-29 01:45:01 +11:00
});
}