Krolyxon
Commit fd519ff

Branches

Refs →

nsxivfd519ff

Disregard obsolete events, fixed issue #64

Author
Bert Münnich
Date
2012-08-17 16:54 +0200
Parent
c78f55e
Commit
fd519ffc40bdd13d8b418b6f95cf28ae6a167d7d

+12 −4

2 files changed

  1. M Makefile +1 −1
  2. M main.c +11 −3
M Makefile View
@@ -1,4 +1,4 @@
1−VERSION = git-20120816
1+VERSION = git-20120817
22
33 PREFIX = /usr/local
44 MANPREFIX = $(PREFIX)/share/man
M main.c View
@@ -419,7 +419,8 @@ void run(void) {
419419 int xfd;
420420 fd_set fds;
421421 struct timeval timeout;
422− XEvent ev;
422+ XEvent ev, nextev;
423+ unsigned int qlen;
423424
424425 redraw();
425426
@@ -450,7 +451,13 @@ void run(void) {
450451 select(xfd + 1, &fds, 0, 0, &timeout);
451452 }
452453
453− XNextEvent(win.env.dpy, &ev);
454+ do {
455+ XNextEvent(win.env.dpy, &ev);
456+ qlen = XEventsQueued(win.env.dpy, QueuedAlready);
457+ if (qlen > 0)
458+ XPeekEvent(win.env.dpy, &nextev);
459+ } while (qlen > 0 && ev.type == nextev.type);
460+
454461 switch (ev.type) {
455462 /* handle events */
456463 case ButtonPress:
@@ -476,7 +483,8 @@ void run(void) {
476483 }
477484 break;
478485 case KeyPress:
479− on_keypress(&ev.xkey);
486+ if (qlen == 0 || ev.xkey.keycode != nextev.xkey.keycode)
487+ on_keypress(&ev.xkey);
480488 break;
481489 case MotionNotify:
482490 if (mode == MODE_IMAGE) {