aboutsummaryrefslogtreecommitdiffstats
path: root/src/x11/window/mod.rs
diff options
context:
space:
mode:
authortomaka <pierre.krieger1708@gmail.com>2015-03-26 16:48:40 +0100
committertomaka <pierre.krieger1708@gmail.com>2015-03-26 16:48:40 +0100
commitd6ebaaaf5cbb1839e74c3c7c0573b1f842c59e6b (patch)
tree1e09474e9664d06ca0bb5539afe849348bba8c51 /src/x11/window/mod.rs
parent506c2bca27abbdec446a6683c665025ba4350ae8 (diff)
parent77d033d672d5bcd6e3e933da682467e53414e934 (diff)
downloadglutin-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 'src/x11/window/mod.rs')
-rw-r--r--src/x11/window/mod.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/x11/window/mod.rs b/src/x11/window/mod.rs
index 385a913..d576150 100644
--- a/src/x11/window/mod.rs
+++ b/src/x11/window/mod.rs
@@ -782,6 +782,33 @@ impl Window {
}
}
+ pub fn grab_cursor(&self) -> Result<(), String> {
+ unsafe {
+ match ffi::XGrabPointer(
+ self.x.display, self.x.window, false,
+ ffi::ButtonPressMask | ffi::ButtonReleaseMask | ffi::EnterWindowMask |
+ ffi::LeaveWindowMask | ffi::PointerMotionMask | ffi::PointerMotionHintMask |
+ ffi::Button1MotionMask | ffi::Button2MotionMask | ffi::Button3MotionMask |
+ ffi::Button4MotionMask | ffi::Button5MotionMask | ffi::ButtonMotionMask |
+ ffi::KeymapStateMask,
+ ffi::GrabModeAsync, ffi::GrabModeAsync,
+ self.x.window, 0, ffi::CurrentTime
+ ) {
+ ffi::GrabSuccess => Ok(()),
+ ffi::AlreadyGrabbed | ffi::GrabInvalidTime |
+ ffi::GrabNotViewable | ffi::GrabFrozen
+ => Err("cursor could not be grabbed".to_string()),
+ _ => unreachable!(),
+ }
+ }
+ }
+
+ pub fn ungrab_cursor(&self) {
+ unsafe {
+ ffi::XUngrabPointer(self.x.display, ffi::CurrentTime);
+ }
+ }
+
pub fn hidpi_factor(&self) -> f32 {
1.0
}