Ignore button and key events while key-handler is running
Related to issue #253, which originally asked for a non-blocking key-handler.
This commit is contained in:
parent
c1ba841783
commit
9a85dd41d8
2
Makefile
2
Makefile
|
@ -1,4 +1,4 @@
|
|||
VERSION := git-20161128
|
||||
VERSION := git-20161129
|
||||
|
||||
PREFIX := /usr/local
|
||||
MANPREFIX := $(PREFIX)/share/man
|
||||
|
|
9
main.c
9
main.c
|
@ -458,6 +458,11 @@ void clear_resize(void)
|
|||
resized = false;
|
||||
}
|
||||
|
||||
Bool is_input_ev(Display *dpy, XEvent *ev, XPointer arg)
|
||||
{
|
||||
return ev->type == ButtonPress || ev->type == KeyPress;
|
||||
}
|
||||
|
||||
void run_key_handler(const char *key, unsigned int mask)
|
||||
{
|
||||
pid_t pid;
|
||||
|
@ -468,6 +473,7 @@ void run_key_handler(const char *key, unsigned int mask)
|
|||
int fcnt = marked ? markcnt : 1;
|
||||
char kstr[32];
|
||||
struct stat *oldst, st;
|
||||
XEvent dump;
|
||||
|
||||
if (keyhandler.f.err != 0) {
|
||||
if (!keyhandler.warned) {
|
||||
|
@ -538,6 +544,9 @@ void run_key_handler(const char *key, unsigned int mask)
|
|||
f++;
|
||||
}
|
||||
}
|
||||
/* drop user input events that occured while running the key handler */
|
||||
while (XCheckIfEvent(win.env.dpy, &dump, is_input_ev, NULL));
|
||||
|
||||
end:
|
||||
if (mode == MODE_IMAGE) {
|
||||
if (changed) {
|
||||
|
|
Loading…
Reference in a new issue