wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

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:
cmd/menu/menu.c | 2+-
cmd/wmii/x11.c | 13+++++++++++++
include/x11.h | 2++
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);