diff options
-rw-r--r-- | config.mk | 2 | ||||
-rw-r--r-- | main.c | 16 |
2 files changed, 12 insertions, 6 deletions
@@ -1,5 +1,5 @@ | |||
1 | # dmenu version | 1 | # dmenu version |
2 | VERSION = 2.7 | 2 | VERSION = 2.8 |
3 | 3 | ||
4 | # Customize below to fit your system | 4 | # Customize below to fit your system |
5 | 5 | ||
@@ -108,11 +108,17 @@ drawmenu(void) { | |||
108 | XFlush(dpy); | 108 | XFlush(dpy); |
109 | } | 109 | } |
110 | 110 | ||
111 | static void | 111 | static Bool |
112 | grabkeyboard(void) { | 112 | grabkeyboard(void) { |
113 | while(XGrabKeyboard(dpy, root, True, GrabModeAsync, | 113 | unsigned int len; |
114 | GrabModeAsync, CurrentTime) != GrabSuccess) | 114 | |
115 | for(len = 1000; len; len--) { | ||
116 | if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime) | ||
117 | == GrabSuccess) | ||
118 | break; | ||
115 | usleep(1000); | 119 | usleep(1000); |
120 | } | ||
121 | return len > 0; | ||
116 | } | 122 | } |
117 | 123 | ||
118 | static unsigned long | 124 | static unsigned long |
@@ -456,10 +462,10 @@ main(int argc, char *argv[]) { | |||
456 | root = RootWindow(dpy, screen); | 462 | root = RootWindow(dpy, screen); |
457 | if(isatty(STDIN_FILENO)) { | 463 | if(isatty(STDIN_FILENO)) { |
458 | maxname = readstdin(); | 464 | maxname = readstdin(); |
459 | grabkeyboard(); | 465 | running = grabkeyboard(); |
460 | } | 466 | } |
461 | else { /* prevent keypress loss */ | 467 | else { /* prevent keypress loss */ |
462 | grabkeyboard(); | 468 | running = grabkeyboard(); |
463 | maxname = readstdin(); | 469 | maxname = readstdin(); |
464 | } | 470 | } |
465 | /* init modifier map */ | 471 | /* init modifier map */ |