diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -371,8 +371,12 @@ void update_info(void) bar_put(r, "%s%0*d/%d", mark, fw, fileidx + 1, filecnt); } else { bar_put(r, "%s", mark); - if (img.ss.on) - bar_put(r, "%2.1fs | ", img.ss.delay); + if (img.ss.on) { + if (img.ss.delay % 10 != 0) + bar_put(r, "%2.1fs | ", (float)img.ss.delay / 10); + else + bar_put(r, "%ds | ", img.ss.delay / 10); + } if (img.gamma != 0) bar_put(r, "G%+d | ", img.gamma); bar_put(r, "%3d%% | ", (int) (img.zoom * 100.0)); @@ -403,7 +407,7 @@ void redraw(void) if (mode == MODE_IMAGE) { img_render(&img); if (img.ss.on) { - t = img.ss.delay * 1000; + t = img.ss.delay * 100; if (img.multi.cnt > 0 && img.multi.animate) t = MAX(t, img.multi.length); set_timeout(slideshow, t, false); @@ -458,6 +462,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 +477,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 +548,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) { |