if (_timer)
delete _timer;
- grabKeys(false);
removeAllKeys();
-// removeAllButtons(); XXX
+ //removeAllButtons(); // this is done by each client as they are unmanaged
removeAllEvents();
}
_keybgrab_callback = 0;
XUngrabKeyboard(**otk::display, CurrentTime);
+ XUngrabPointer(**otk::display, CurrentTime);
+}
+
+
+bool Bindings::grabPointer(int screen)
+{
+ if (!openbox->screen(screen))
+ return false; // the screen is not managed
+
+ Window root = otk::display->screenInfo(screen)->rootWindow();
+ XGrabPointer(**otk::display, root, false, 0, GrabModeAsync,
+ GrabModeAsync, None, None, CurrentTime);
+ return true;
+}
+
+
+void Bindings::ungrabPointer()
+{
+ XUngrabPointer(**otk::display, CurrentTime);
}
_timer = new otk::Timer(5000, // 5 second timeout
(otk::Timer::TimeoutHandler)resetChains,
this);
- // grab the server here to make sure no key pressed go missed
+ // grab the server here to make sure no key presses get missed
otk::display->grab();
grabKeys(false);
_curpos = p;