Add mouse buttons press/release events for X11

This commit is contained in:
Pierre Krieger 2014-07-31 17:33:46 +02:00
parent 0d45c7fcb4
commit 59b4d23d58
2 changed files with 26 additions and 1 deletions

View file

@ -30,6 +30,12 @@ pub type XID = uint;
pub static AllocNone: libc::c_int = 0;
pub static AllocAll: libc::c_int = 1;
pub static Button1: libc::c_uint = 1;
pub static Button2: libc::c_uint = 2;
pub static Button3: libc::c_uint = 3;
pub static Button4: libc::c_uint = 4;
pub static Button5: libc::c_uint = 5;
pub static InputOutput: libc::c_uint = 1;
pub static InputOnly: libc::c_uint = 2;

View file

@ -243,8 +243,27 @@ impl Window {
ffi::ButtonPress | ffi::ButtonRelease => {
use {Pressed, Released};
use events;
let event: &ffi::XButtonEvent = unsafe { mem::transmute(&xev) };
//events.push(CursorPositionChanged(event.x as uint, event.y as uint));
let elem = match event.button {
ffi::Button1 => Some(events::Button1),
ffi::Button2 => Some(events::Button2),
ffi::Button3 => Some(events::Button3),
ffi::Button4 => Some(events::Button4),
ffi::Button5 => Some(events::Button5),
_ => None
};
if elem.is_some() {
let elem = elem.unwrap();
if xev.type_ == ffi::ButtonPress {
events.push(Pressed(elem));
} else if xev.type_ == ffi::ButtonRelease {
events.push(Released(elem));
}
}
},
_ => ()