diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/api/x11/window.rs | 13 | 
1 files changed, 9 insertions, 4 deletions
| diff --git a/src/api/x11/window.rs b/src/api/x11/window.rs index 38838f5..42134d0 100644 --- a/src/api/x11/window.rs +++ b/src/api/x11/window.rs @@ -711,20 +711,22 @@ impl Window {      }      pub fn set_cursor_state(&self, state: CursorState) -> Result<(), String> { +        use CursorState::{ Grab, Normal }; +          let mut cursor_state = self.cursor_state.lock().unwrap();          match (state, *cursor_state) { -            (CursorState::Normal, CursorState::Grab) => { +            (Normal, Grab) => {                  unsafe {                      (self.x.display.xlib.XUngrabPointer)(self.x.display.display, ffi::CurrentTime); -                    *cursor_state = CursorState::Normal; +                    *cursor_state = Normal;                      Ok(())                  }              }, -            (CursorState::Grab, CursorState::Normal) => { +            (Grab, Normal) => {                  unsafe { -                    *cursor_state = CursorState::Grab; +                    *cursor_state = Grab;                      match (self.x.display.xlib.XGrabPointer)(                          self.x.display.display, self.x.window, ffi::False, @@ -745,6 +747,9 @@ impl Window {                  }              }, +            // Nothing needs to change +            (Grab, Grab) | (Normal, Normal) => Ok(()), +              _ => unimplemented!(),          }      } | 
