diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-03-18 19:51:56 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-03-18 19:51:56 +0000 |
| commit | 598c5d6c07118517b47d7c416a79dc9743271aa8 (patch) | |
| tree | 66e56ab23f40c9bbf894c337bec7b8bd8a0950d7 /openbox/grab.c | |
| parent | 3dfe9f4ebeb7abd8446c52db0232b9f610a78846 (diff) | |
provide functions for grabbing and ungrabbing the keyboard and pointer
Diffstat (limited to 'openbox/grab.c')
| -rw-r--r-- | openbox/grab.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/openbox/grab.c b/openbox/grab.c new file mode 100644 index 00000000..3bba14b3 --- /dev/null +++ b/openbox/grab.c @@ -0,0 +1,40 @@ +#include "openbox.h" +#include <glib.h> +#include <X11/Xlib.h> + +static guint kgrabs, pgrabs; + +void grab_keyboard(gboolean grab) +{ + if (grab) { + if (kgrabs++ == 0) + XGrabKeyboard(ob_display, ob_root, 0, GrabModeAsync, GrabModeSync, + CurrentTime); + } else if (kgrabs > 0) { + if (--kgrabs == 0) + XUngrabKeyboard(ob_display, CurrentTime); + } +} + +void grab_pointer(gboolean grab, Cursor cur) +{ + if (grab) { + if (pgrabs++ == 0) + XGrabPointer(ob_display, ob_root, False, 0, GrabModeAsync, + GrabModeSync, FALSE, cur, CurrentTime); + } else if (pgrabs > 0) { + if (--pgrabs == 0) + XUngrabPointer(ob_display, CurrentTime); + } +} + +void grab_startup() +{ + kgrabs = pgrabs = 0; +} + +void grab_shutdown() +{ + while (kgrabs) grab_keyboard(FALSE); + while (pgrabs) grab_pointer(FALSE, None); +} |
