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 /src/x11/window/mod.rs | |
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 'src/x11/window/mod.rs')
-rw-r--r-- | src/x11/window/mod.rs | 27 |
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 } |