some other small fixes
2ffdc193
2 file(s) · +12 −10
| 254 | 254 | XKeyEvent *ev = &e->xkey; |
|
| 255 | 255 | ||
| 256 | 256 | keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); |
|
| 257 | - | for(i = 0; i < len; i++) |
|
| 257 | + | for(i = 0; i < len; i++) { |
|
| 258 | 258 | if(keysym == key[i].keysym && |
|
| 259 | - | CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) { |
|
| 259 | + | CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) |
|
| 260 | + | { |
|
| 260 | 261 | if(key[i].func) |
|
| 261 | 262 | key[i].func(&key[i].arg); |
|
| 262 | 263 | return; |
|
| 263 | 264 | } |
|
| 265 | + | } |
|
| 264 | 266 | } |
|
| 265 | 267 | ||
| 266 | 268 | static void |
| 196 | 196 | ||
| 197 | 197 | XSetErrorHandler(NULL); |
|
| 198 | 198 | xerrorxlib = XSetErrorHandler(xerror); |
|
| 199 | + | XSync(dpy, False); |
|
| 199 | 200 | ||
| 200 | 201 | /* init atoms */ |
|
| 201 | 202 | wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); |
|
| 269 | 270 | if(i < 0) |
|
| 270 | 271 | eprint("select failed\n"); |
|
| 271 | 272 | else if(i > 0) { |
|
| 272 | - | if(FD_ISSET(xfd, &rd)) { |
|
| 273 | - | while(XPending(dpy)) { |
|
| 274 | - | XNextEvent(dpy, &ev); |
|
| 275 | - | if(handler[ev.type]) |
|
| 276 | - | (handler[ev.type])(&ev); /* call handler */ |
|
| 277 | - | } |
|
| 278 | - | } |
|
| 279 | 273 | if(readin && FD_ISSET(STDIN_FILENO, &rd)) { |
|
| 280 | 274 | readin = NULL != fgets(stext, sizeof(stext), stdin); |
|
| 281 | 275 | if(readin) |
|
| 284 | 278 | strcpy(stext, "broken pipe"); |
|
| 285 | 279 | drawstatus(); |
|
| 286 | 280 | } |
|
| 281 | + | if(FD_ISSET(xfd, &rd)) { |
|
| 282 | + | while(XPending(dpy)) { |
|
| 283 | + | XNextEvent(dpy, &ev); |
|
| 284 | + | if(handler[ev.type]) |
|
| 285 | + | (handler[ev.type])(&ev); /* call handler */ |
|
| 286 | + | } |
|
| 287 | + | } |
|
| 287 | 288 | } |
|
| 288 | 289 | } |
|
| 289 | - | ||
| 290 | 290 | cleanup(); |
|
| 291 | 291 | XCloseDisplay(dpy); |
|
| 292 | 292 | ||