nsxiv485e6c8
H/J/K/L mappings to pan to edges
+44 −1
4 files changed
| @@ -1,6 +1,6 @@ | |||
| 1 | 1 | all: sxiv | |
| 2 | 2 | ||
| 3 | − | VERSION=git-20110510 | |
| 3 | + | VERSION=git-20110516 | |
| 4 | 4 | ||
| 5 | 5 | CC?=gcc | |
| 6 | 6 | DESTDIR?= | |
| @@ -293,6 +293,35 @@ int img_pan(img_t *img, win_t *win, pandir_t dir) { | |||
| 293 | 293 | return 0; | |
| 294 | 294 | } | |
| 295 | 295 | ||
| 296 | + | int img_pan_edge(img_t *img, win_t *win, pandir_t dir) { | |
| 297 | + | int ox, oy; | |
| 298 | + | ||
| 299 | + | if (!img || !img->im || !win) | |
| 300 | + | return 0; | |
| 301 | + | ||
| 302 | + | ox = img->x; | |
| 303 | + | oy = img->y; | |
| 304 | + | ||
| 305 | + | switch (dir) { | |
| 306 | + | case PAN_LEFT: | |
| 307 | + | img->x = 0; | |
| 308 | + | break; | |
| 309 | + | case PAN_RIGHT: | |
| 310 | + | img->x = win->w - img->w * img->zoom; | |
| 311 | + | break; | |
| 312 | + | case PAN_UP: | |
| 313 | + | img->y = 0; | |
| 314 | + | break; | |
| 315 | + | case PAN_DOWN: | |
| 316 | + | img->y = win->h - img->h * img->zoom; | |
| 317 | + | break; | |
| 318 | + | } | |
| 319 | + | ||
| 320 | + | img_check_pan(img, win); | |
| 321 | + | ||
| 322 | + | return ox != img->x || oy != img->y; | |
| 323 | + | } | |
| 324 | + | ||
| 296 | 325 | void img_rotate(img_t *img, win_t *win, int d) { | |
| 297 | 326 | int ox, oy, tmp; | |
| 298 | 327 | ||
| @@ -69,6 +69,7 @@ int img_zoom_out(img_t*, win_t*); | |||
| 69 | 69 | ||
| 70 | 70 | int img_move(img_t*, win_t*, int, int); | |
| 71 | 71 | int img_pan(img_t*, win_t*, pandir_t); | |
| 72 | + | int img_pan_edge(img_t*, win_t*, pandir_t); | |
| 72 | 73 | ||
| 73 | 74 | void img_rotate_left(img_t*, win_t*); | |
| 74 | 75 | void img_rotate_right(img_t*, win_t*); | |
| @@ -455,6 +455,19 @@ void on_keypress(XKeyEvent *kev) { | |||
| 455 | 455 | changed = img_pan(&img, &win, PAN_RIGHT); | |
| 456 | 456 | break; | |
| 457 | 457 | ||
| 458 | + | case XK_H: | |
| 459 | + | changed = img_pan_edge(&img, &win, PAN_LEFT); | |
| 460 | + | break; | |
| 461 | + | case XK_J: | |
| 462 | + | changed = img_pan_edge(&img, &win, PAN_DOWN); | |
| 463 | + | break; | |
| 464 | + | case XK_K: | |
| 465 | + | changed = img_pan_edge(&img, &win, PAN_UP); | |
| 466 | + | break; | |
| 467 | + | case XK_L: | |
| 468 | + | changed = img_pan_edge(&img, &win, PAN_RIGHT); | |
| 469 | + | break; | |
| 470 | + | ||
| 458 | 471 | /* rotation */ | |
| 459 | 472 | case XK_less: | |
| 460 | 473 | img_rotate_left(&img, &win); | |