commit 692dcce6235ec6359357be7c5c24fd01b37a078b
parent 98f66f5aaf6eb51ffa1912b6b81b6bfbefb35d0a
Author: Kris Maglione <jg@suckless.org>
Date: Tue, 14 Oct 2008 19:08:13 -0400
[menu] Grab the keyboard rather than setting the keyboard focus.
Diffstat:
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/cmd/menu/menu.c b/cmd/menu/menu.c
@@ -223,7 +223,7 @@ menu_show(void) {
mapwin(barwin);
raisewin(barwin);
menu_draw();
- setfocus(barwin, RevertToPointerRoot);
+ grabkeyboard(barwin);
}
static void
diff --git a/cmd/wmii/x11.c b/cmd/wmii/x11.c
@@ -970,6 +970,19 @@ ungrabpointer(void) {
XUngrabPointer(display, CurrentTime);
}
+int
+grabkeyboard(Window *w) {
+
+ return XGrabKeyboard(display, w->w, false /* owner events */,
+ GrabModeAsync, GrabModeAsync, CurrentTime
+ ) == GrabSuccess;
+}
+
+void
+ungrabkeyboard(void) {
+ XUngrabKeyboard(display, CurrentTime);
+}
+
/* Insanity */
void
sethints(Window *w) {
diff --git a/include/x11.h b/include/x11.h
@@ -212,6 +212,7 @@ char* getprop_string(Window*, char*);
int getprop_textlist(Window *w, char *name, char **ret[]);
ulong getprop_ulong(Window*, char*, char*, ulong, ulong**, ulong);
ulong getproperty(Window*, char *prop, char *type, Atom *actual, ulong offset, uchar **ret, ulong length);
+int grabkeyboard(Window*);
int grabpointer(Window*, Window *confine, Cursor, int mask);
void initdisplay(void);
KeyCode keycode(char*);
@@ -242,6 +243,7 @@ uint textwidth(Font*, char*);
uint textwidth_l(Font*, char*, uint len);
int traperrors(bool);
Point translate(Window*, Window*, Point);
+void ungrabkeyboard(void);
void ungrabpointer(void);
int unmapwin(Window*);
void warppointer(Point);