Krolyxon
Commit 6adbb38

Branches

Refs →

nsxiv6adbb38

Use Button1 to open thumbnail

Author
Bert
Date
2011-02-17 17:28 +0100
Parent
f08c24b
Commit
6adbb3831d889b7a0fa3b69e40843d8b70beaf55

+74 −41

3 files changed

  1. M main.c +56 −41
  2. M thumbs.c +16 −0
  3. M thumbs.h +2 −0
M main.c View
@@ -268,11 +268,11 @@ void redraw() {
268268 }
269269
270270 void on_keypress(XKeyEvent *kev) {
271− int sel, x, y;
271+ int x, y;
272272 unsigned int w, h;
273273 char key;
274274 KeySym ksym;
275− int changed;
275+ int changed, sel;
276276
277277 if (!kev)
278278 return;
@@ -439,7 +439,7 @@ void on_keypress(XKeyEvent *kev) {
439439 }
440440
441441 void on_buttonpress(XButtonEvent *bev) {
442− int changed;
442+ int changed, sel;
443443 unsigned int mask;
444444
445445 if (!bev)
@@ -448,46 +448,61 @@ void on_buttonpress(XButtonEvent *bev) {
448448 mask = CLEANMASK(bev->state);
449449 changed = 0;
450450
451− switch (bev->button) {
452− case Button1:
453− if (fileidx + 1 < filecnt) {
454− ++fileidx;
455− changed = load_image();
456− }
457− break;
458− case Button2:
459− mox = bev->x;
460− moy = bev->y;
461− win_set_cursor(&win, CURSOR_HAND);
462− break;
463− case Button3:
464− if (fileidx > 0) {
465− --fileidx;
466− changed = load_image();
467− }
468− break;
469− case Button4:
470− if (mask == ControlMask)
471− changed = img_zoom_in(&img);
472− else if (mask == ShiftMask)
451+ if (mode == MODE_NORMAL) {
452+ switch (bev->button) {
453+ case Button1:
454+ if (fileidx + 1 < filecnt) {
455+ ++fileidx;
456+ changed = load_image();
457+ }
458+ break;
459+ case Button2:
460+ mox = bev->x;
461+ moy = bev->y;
462+ win_set_cursor(&win, CURSOR_HAND);
463+ break;
464+ case Button3:
465+ if (fileidx > 0) {
466+ --fileidx;
467+ changed = load_image();
468+ }
469+ break;
470+ case Button4:
471+ if (mask == ControlMask)
472+ changed = img_zoom_in(&img);
473+ else if (mask == ShiftMask)
474+ changed = img_pan(&img, &win, PAN_LEFT);
475+ else
476+ changed = img_pan(&img, &win, PAN_UP);
477+ break;
478+ case Button5:
479+ if (mask == ControlMask)
480+ changed = img_zoom_out(&img);
481+ else if (mask == ShiftMask)
482+ changed = img_pan(&img, &win, PAN_RIGHT);
483+ else
484+ changed = img_pan(&img, &win, PAN_DOWN);
485+ break;
486+ case 6:
473487 changed = img_pan(&img, &win, PAN_LEFT);
474− else
475− changed = img_pan(&img, &win, PAN_UP);
476− break;
477− case Button5:
478− if (mask == ControlMask)
479− changed = img_zoom_out(&img);
480− else if (mask == ShiftMask)
488+ break;
489+ case 7:
481490 changed = img_pan(&img, &win, PAN_RIGHT);
482− else
483− changed = img_pan(&img, &win, PAN_DOWN);
484− break;
485− case 6:
486− changed = img_pan(&img, &win, PAN_LEFT);
487− break;
488− case 7:
489− changed = img_pan(&img, &win, PAN_RIGHT);
490− break;
491+ break;
492+ }
493+ } else {
494+ /* thumbnail mode */
495+ switch (bev->button) {
496+ case Button1:
497+ if ((sel = tns_translate(&tns, bev->x, bev->y)) >= 0) {
498+ fileidx = sel;
499+ load_image();
500+ mode = MODE_NORMAL;
501+ changed = 1;
502+ break;
503+ }
504+ break;
505+ }
491506 }
492507
493508 if (changed)
M thumbs.c View
@@ -170,3 +170,19 @@ void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) {
170170 break;
171171 }
172172 }
173+
174+int tns_translate(tns_t *tns, int x, int y) {
175+ int n;
176+ thumb_t *t;
177+
178+ if (!tns || x < 5 || y < 5)
179+ return -1;
180+
181+ if ((n = y / thumb_dim * tns-> cols + x / thumb_dim) < tns->cnt) {
182+ t = &tns->thumbs[n];
183+ if (x > t->x && x < t->x + t->w && y > t->y && y < t->y + t->h)
184+ return n;
185+ }
186+
187+ return -1;
188+}
M thumbs.h View
@@ -57,4 +57,6 @@ void tns_highlight(tns_t*, win_t*, int);
5757
5858 void tns_move_selection(tns_t*, win_t*, movedir_t);
5959
60+int tns_translate(tns_t*, int, int);
61+
6062 #endif /* THUMBS_H */