nsxiva610037
New mappings: ctrl-[hjkl], pan image one window width/height
+44 −23
6 files changed
| @@ -1,6 +1,6 @@ | |||
| 1 | 1 | all: sxiv | |
| 2 | 2 | ||
| 3 | − | VERSION=git-20110529 | |
| 3 | + | VERSION=git-20110603 | |
| 4 | 4 | ||
| 5 | 5 | CC?=gcc | |
| 6 | 6 | DESTDIR?= | |
| @@ -69,6 +69,8 @@ thumbnail mode are denoted via brackets: | |||
| 69 | 69 | h,j,k,l Pan image [move selection] left/down/up/right | |
| 70 | 70 | (also with arrow keys) | |
| 71 | 71 | H,J,K,L Pan to left/bottom/top/right image edge | |
| 72 | + | Ctrl-h,j,k,l Pan image one window width/height left/down/up/right | |
| 73 | + | (also with Ctrl-arrow keys) | |
| 72 | 74 | ||
| 73 | 75 | <,> Rotate image (counter-)clockwise by 90 degrees | |
| 74 | 76 | ||
| @@ -275,19 +275,19 @@ int img_move(img_t *img, win_t *win, int dx, int dy) { | |||
| 275 | 275 | return ox != img->x || oy != img->y; | |
| 276 | 276 | } | |
| 277 | 277 | ||
| 278 | − | int img_pan(img_t *img, win_t *win, pandir_t dir) { | |
| 278 | + | int img_pan(img_t *img, win_t *win, pandir_t dir, int page) { | |
| 279 | 279 | if (!img || !img->im || !win) | |
| 280 | 280 | return 0; | |
| 281 | 281 | ||
| 282 | 282 | switch (dir) { | |
| 283 | 283 | case PAN_LEFT: | |
| 284 | − | return img_move(img, win, win->w / 5, 0); | |
| 284 | + | return img_move(img, win, win->w / (page ? 1 : 5), 0); | |
| 285 | 285 | case PAN_RIGHT: | |
| 286 | − | return img_move(img, win, win->w / 5 * -1, 0); | |
| 286 | + | return img_move(img, win, win->w / (page ? 1 : 5) * -1, 0); | |
| 287 | 287 | case PAN_UP: | |
| 288 | − | return img_move(img, win, 0, win->h / 5); | |
| 288 | + | return img_move(img, win, 0, win->h / (page ? 1 : 5)); | |
| 289 | 289 | case PAN_DOWN: | |
| 290 | − | return img_move(img, win, 0, win->h / 5 * -1); | |
| 290 | + | return img_move(img, win, 0, win->h / (page ? 1 : 5) * -1); | |
| 291 | 291 | } | |
| 292 | 292 | ||
| 293 | 293 | return 0; | |
| @@ -68,7 +68,7 @@ int img_zoom_in(img_t*, win_t*); | |||
| 68 | 68 | int img_zoom_out(img_t*, win_t*); | |
| 69 | 69 | ||
| 70 | 70 | int img_move(img_t*, win_t*, int, int); | |
| 71 | − | int img_pan(img_t*, win_t*, pandir_t); | |
| 71 | + | int img_pan(img_t*, win_t*, pandir_t, int); | |
| 72 | 72 | int img_pan_edge(img_t*, win_t*, pandir_t); | |
| 73 | 73 | ||
| 74 | 74 | void img_rotate_left(img_t*, win_t*); | |
| @@ -357,17 +357,18 @@ void on_keypress(XKeyEvent *kev) { | |||
| 357 | 357 | unsigned int w, h; | |
| 358 | 358 | char key; | |
| 359 | 359 | KeySym ksym; | |
| 360 | − | int changed; | |
| 360 | + | int changed, ctrl; | |
| 361 | 361 | ||
| 362 | 362 | if (!kev) | |
| 363 | 363 | return; | |
| 364 | 364 | ||
| 365 | 365 | XLookupString(kev, &key, 1, &ksym, NULL); | |
| 366 | 366 | changed = 0; | |
| 367 | + | ctrl = CLEANMASK(kev->state) & ControlMask; | |
| 367 | 368 | ||
| 368 | 369 | #if EXT_COMMANDS | |
| 369 | 370 | /* external commands from commands.h */ | |
| 370 | − | if (CLEANMASK(kev->state) & ControlMask) { | |
| 371 | + | if (ctrl) { | |
| 371 | 372 | for (x = 0; x < LEN(commands); ++x) { | |
| 372 | 373 | if (commands[x].ksym == ksym) { | |
| 373 | 374 | win_set_cursor(&win, CURSOR_WATCH); | |
| @@ -446,19 +447,25 @@ void on_keypress(XKeyEvent *kev) { | |||
| 446 | 447 | /* panning */ | |
| 447 | 448 | case XK_h: | |
| 448 | 449 | case XK_Left: | |
| 449 | − | changed = img_pan(&img, &win, PAN_LEFT); | |
| 450 | + | changed = img_pan(&img, &win, PAN_LEFT, ctrl); | |
| 450 | 451 | break; | |
| 451 | 452 | case XK_j: | |
| 452 | 453 | case XK_Down: | |
| 453 | − | changed = img_pan(&img, &win, PAN_DOWN); | |
| 454 | + | changed = img_pan(&img, &win, PAN_DOWN, ctrl); | |
| 454 | 455 | break; | |
| 455 | 456 | case XK_k: | |
| 456 | 457 | case XK_Up: | |
| 457 | − | changed = img_pan(&img, &win, PAN_UP); | |
| 458 | + | changed = img_pan(&img, &win, PAN_UP, ctrl); | |
| 458 | 459 | break; | |
| 459 | 460 | case XK_l: | |
| 460 | 461 | case XK_Right: | |
| 461 | − | changed = img_pan(&img, &win, PAN_RIGHT); | |
| 462 | + | changed = img_pan(&img, &win, PAN_RIGHT, ctrl); | |
| 463 | + | break; | |
| 464 | + | case XK_Prior: | |
| 465 | + | changed = img_pan(&img, &win, PAN_UP, 1); | |
| 466 | + | break; | |
| 467 | + | case XK_Next: | |
| 468 | + | changed = img_pan(&img, &win, PAN_DOWN, 1); | |
| 462 | 469 | break; | |
| 463 | 470 | ||
| 464 | 471 | case XK_H: | |
| @@ -632,23 +639,23 @@ void on_buttonpress(XButtonEvent *bev) { | |||
| 632 | 639 | if (mask == ControlMask) | |
| 633 | 640 | changed = img_zoom_in(&img, &win); | |
| 634 | 641 | else if (mask == ShiftMask) | |
| 635 | − | changed = img_pan(&img, &win, PAN_LEFT); | |
| 642 | + | changed = img_pan(&img, &win, PAN_LEFT, 0); | |
| 636 | 643 | else | |
| 637 | − | changed = img_pan(&img, &win, PAN_UP); | |
| 644 | + | changed = img_pan(&img, &win, PAN_UP, 0); | |
| 638 | 645 | break; | |
| 639 | 646 | case Button5: | |
| 640 | 647 | if (mask == ControlMask) | |
| 641 | 648 | changed = img_zoom_out(&img, &win); | |
| 642 | 649 | else if (mask == ShiftMask) | |
| 643 | − | changed = img_pan(&img, &win, PAN_RIGHT); | |
| 650 | + | changed = img_pan(&img, &win, PAN_RIGHT, 0); | |
| 644 | 651 | else | |
| 645 | − | changed = img_pan(&img, &win, PAN_DOWN); | |
| 652 | + | changed = img_pan(&img, &win, PAN_DOWN, 0); | |
| 646 | 653 | break; | |
| 647 | 654 | case 6: | |
| 648 | − | changed = img_pan(&img, &win, PAN_LEFT); | |
| 655 | + | changed = img_pan(&img, &win, PAN_LEFT, 0); | |
| 649 | 656 | break; | |
| 650 | 657 | case 7: | |
| 651 | − | changed = img_pan(&img, &win, PAN_RIGHT); | |
| 658 | + | changed = img_pan(&img, &win, PAN_RIGHT, 0); | |
| 652 | 659 | break; | |
| 653 | 660 | } | |
| 654 | 661 | } else { | |
| @@ -138,17 +138,29 @@ Pan image [move selection] up. | |||
| 138 | 138 | .BR l ", " Right | |
| 139 | 139 | Pan image [move selection] right. | |
| 140 | 140 | .TP | |
| 141 | − | .BR H | |
| 141 | + | .B H | |
| 142 | 142 | Pan to left image edge. | |
| 143 | 143 | .TP | |
| 144 | − | .BR J | |
| 144 | + | .B J | |
| 145 | 145 | Pan to bottom image edge. | |
| 146 | 146 | .TP | |
| 147 | − | .BR K | |
| 147 | + | .B K | |
| 148 | 148 | Pan to top image edge. | |
| 149 | 149 | .TP | |
| 150 | − | .BR L | |
| 150 | + | .B L | |
| 151 | 151 | Pan to right image edge. | |
| 152 | + | .TP | |
| 153 | + | .BR Ctrl-h ", " Ctrl-Left | |
| 154 | + | Pan image one window width left. | |
| 155 | + | .TP | |
| 156 | + | .BR Ctrl-j ", " Ctrl-Down ", " PageDn | |
| 157 | + | Pan image one window height down. | |
| 158 | + | .TP | |
| 159 | + | .BR Ctrl-k ", " Ctrl-Up ", " PageUp | |
| 160 | + | Pan image one window height up. | |
| 161 | + | .TP | |
| 162 | + | .BR Ctrl-l ", " Ctrl-Right | |
| 163 | + | Pan image one window width right. | |
| 152 | 164 | .SS Rotation | |
| 153 | 165 | .TP | |
| 154 | 166 | .B < | |