| @@ -268,11 +268,11 @@ void redraw() { |
| 268 | 268 | | } |
| 269 | 269 | | |
| 270 | 270 | | void on_keypress(XKeyEvent *kev) { |
| 271 | | − | int sel, x, y; |
| 271 | + | int x, y; |
| 272 | 272 | | unsigned int w, h; |
| 273 | 273 | | char key; |
| 274 | 274 | | KeySym ksym; |
| 275 | | − | int changed; |
| 275 | + | int changed, sel; |
| 276 | 276 | | |
| 277 | 277 | | if (!kev) |
| 278 | 278 | | return; |
| @@ -439,7 +439,7 @@ void on_keypress(XKeyEvent *kev) { |
| 439 | 439 | | } |
| 440 | 440 | | |
| 441 | 441 | | void on_buttonpress(XButtonEvent *bev) { |
| 442 | | − | int changed; |
| 442 | + | int changed, sel; |
| 443 | 443 | | unsigned int mask; |
| 444 | 444 | | |
| 445 | 445 | | if (!bev) |
| @@ -448,46 +448,61 @@ void on_buttonpress(XButtonEvent *bev) { |
| 448 | 448 | | mask = CLEANMASK(bev->state); |
| 449 | 449 | | changed = 0; |
| 450 | 450 | | |
| 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: |
| 473 | 487 | | 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: |
| 481 | 490 | | 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 | + | } |
| 491 | 506 | | } |
| 492 | 507 | | |
| 493 | 508 | | if (changed) |