nsxived69b48
Double click on thumbnail to open image
+12 −7
2 files changed
| @@ -553,6 +553,7 @@ void on_keypress(XKeyEvent *kev) | |||
| 553 | 553 | void on_buttonpress(XButtonEvent *bev) | |
| 554 | 554 | { | |
| 555 | 555 | int i, sel; | |
| 556 | + | static Time firstclick; | |
| 556 | 557 | ||
| 557 | 558 | if (bev == NULL) | |
| 558 | 559 | return; | |
| @@ -580,17 +581,20 @@ void on_buttonpress(XButtonEvent *bev) | |||
| 580 | 581 | switch (bev->button) { | |
| 581 | 582 | case Button1: | |
| 582 | 583 | if ((sel = tns_translate(&tns, bev->x, bev->y)) >= 0) { | |
| 583 | − | if (sel == tns.sel) { | |
| 584 | + | if (sel != tns.sel) { | |
| 585 | + | tns_highlight(&tns, tns.sel, false); | |
| 586 | + | tns_highlight(&tns, sel, true); | |
| 587 | + | tns.sel = sel; | |
| 588 | + | firstclick = bev->time; | |
| 589 | + | redraw(); | |
| 590 | + | } else if (bev->time - firstclick <= TO_DOUBLE_CLICK) { | |
| 584 | 591 | mode = MODE_IMAGE; | |
| 585 | 592 | set_timeout(reset_cursor, TO_CURSOR_HIDE, true); | |
| 586 | 593 | load_image(tns.sel); | |
| 594 | + | redraw(); | |
| 587 | 595 | } else { | |
| 588 | − | tns_highlight(&tns, tns.sel, false); | |
| 589 | − | tns_highlight(&tns, sel, true); | |
| 590 | − | tns.sel = sel; | |
| 596 | + | firstclick = bev->time; | |
| 591 | 597 | } | |
| 592 | − | redraw(); | |
| 593 | − | break; | |
| 594 | 598 | } | |
| 595 | 599 | break; | |
| 596 | 600 | case Button3: | |
| @@ -76,7 +76,8 @@ typedef struct { | |||
| 76 | 76 | enum { | |
| 77 | 77 | TO_REDRAW_RESIZE = 75, | |
| 78 | 78 | TO_REDRAW_THUMBS = 200, | |
| 79 | − | TO_CURSOR_HIDE = 1200 | |
| 79 | + | TO_CURSOR_HIDE = 1200, | |
| 80 | + | TO_DOUBLE_CLICK = 300 | |
| 80 | 81 | }; | |
| 81 | 82 | ||
| 82 | 83 | typedef void (*timeout_f)(void); | |