Disregard obsolete events, fixed issue #64

master
Bert Münnich 2012-08-17 16:54:29 +02:00
parent c78f55ebb4
commit fd519ffc40
2 changed files with 12 additions and 4 deletions

View File

@ -1,4 +1,4 @@
VERSION = git-20120816
VERSION = git-20120817
PREFIX = /usr/local
MANPREFIX = $(PREFIX)/share/man

14
main.c
View File

@ -419,7 +419,8 @@ void run(void) {
int xfd;
fd_set fds;
struct timeval timeout;
XEvent ev;
XEvent ev, nextev;
unsigned int qlen;
redraw();
@ -450,7 +451,13 @@ void run(void) {
select(xfd + 1, &fds, 0, 0, &timeout);
}
XNextEvent(win.env.dpy, &ev);
do {
XNextEvent(win.env.dpy, &ev);
qlen = XEventsQueued(win.env.dpy, QueuedAlready);
if (qlen > 0)
XPeekEvent(win.env.dpy, &nextev);
} while (qlen > 0 && ev.type == nextev.type);
switch (ev.type) {
/* handle events */
case ButtonPress:
@ -476,7 +483,8 @@ void run(void) {
}
break;
case KeyPress:
on_keypress(&ev.xkey);
if (qlen == 0 || ev.xkey.keycode != nextev.xkey.keycode)
on_keypress(&ev.xkey);
break;
case MotionNotify:
if (mode == MODE_IMAGE) {