aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/x11/ffi.rs6
-rw-r--r--src/x11/mod.rs21
2 files changed, 26 insertions, 1 deletions
diff --git a/src/x11/ffi.rs b/src/x11/ffi.rs
index f73d408..2c94820 100644
--- a/src/x11/ffi.rs
+++ b/src/x11/ffi.rs
@@ -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;
diff --git a/src/x11/mod.rs b/src/x11/mod.rs
index 4bd186f..c2b2044 100644
--- a/src/x11/mod.rs
+++ b/src/x11/mod.rs
@@ -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));
+ }
+ }
},
_ => ()