summaryrefslogtreecommitdiff
path: root/src/bindings.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/bindings.cc')
-rw-r--r--src/bindings.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/bindings.cc b/src/bindings.cc
index 783b6479..a3694102 100644
--- a/src/bindings.cc
+++ b/src/bindings.cc
@@ -385,9 +385,6 @@ bool Bindings::grabKeyboard(int screen, PyObject *callback)
if (XGrabKeyboard(**otk::display, root, false, GrabModeAsync,
GrabModeAsync, CurrentTime))
return false;
- // the pointer grab causes pointer events during the keyboard grab to go away
- XGrabPointer(**otk::display, root, false, 0, GrabModeAsync,
- GrabModeAsync, None, None, CurrentTime);
_keybgrab_callback = callback;
return true;
}
@@ -403,6 +400,24 @@ void Bindings::ungrabKeyboard()
}
+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);
+}
+
+
void Bindings::fireKey(int screen, unsigned int modifiers, unsigned int key,
Time time, KeyAction::KA action)
{