Krolyxon
Commit a610037

Branches

Refs →

nsxiva610037

New mappings: ctrl-[hjkl], pan image one window width/height

Author
Bert
Date
2011-06-03 23:39 +0200
Parent
ea23115
Commit
a6100373c1be2796966fa7e15d7b41f2f8a112f7

+44 −23

6 files changed

  1. M Makefile +1 −1
  2. M README.md +2 −0
  3. M image.c +5 −5
  4. M image.h +1 −1
  5. M main.c +19 −12
  6. M sxiv.1 +16 −4
M Makefile View
@@ -1,6 +1,6 @@
11 all: sxiv
22
3−VERSION=git-20110529
3+VERSION=git-20110603
44
55 CC?=gcc
66 DESTDIR?=
M README.md View
@@ -69,6 +69,8 @@ thumbnail mode are denoted via brackets:
6969 h,j,k,l Pan image [move selection] left/down/up/right
7070 (also with arrow keys)
7171 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)
7274
7375 <,> Rotate image (counter-)clockwise by 90 degrees
7476
M image.c View
@@ -275,19 +275,19 @@ int img_move(img_t *img, win_t *win, int dx, int dy) {
275275 return ox != img->x || oy != img->y;
276276 }
277277
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) {
279279 if (!img || !img->im || !win)
280280 return 0;
281281
282282 switch (dir) {
283283 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);
285285 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);
287287 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));
289289 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);
291291 }
292292
293293 return 0;
M image.h View
@@ -68,7 +68,7 @@ int img_zoom_in(img_t*, win_t*);
6868 int img_zoom_out(img_t*, win_t*);
6969
7070 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);
7272 int img_pan_edge(img_t*, win_t*, pandir_t);
7373
7474 void img_rotate_left(img_t*, win_t*);
M main.c View
@@ -357,17 +357,18 @@ void on_keypress(XKeyEvent *kev) {
357357 unsigned int w, h;
358358 char key;
359359 KeySym ksym;
360− int changed;
360+ int changed, ctrl;
361361
362362 if (!kev)
363363 return;
364364
365365 XLookupString(kev, &key, 1, &ksym, NULL);
366366 changed = 0;
367+ ctrl = CLEANMASK(kev->state) & ControlMask;
367368
368369 #if EXT_COMMANDS
369370 /* external commands from commands.h */
370− if (CLEANMASK(kev->state) & ControlMask) {
371+ if (ctrl) {
371372 for (x = 0; x < LEN(commands); ++x) {
372373 if (commands[x].ksym == ksym) {
373374 win_set_cursor(&win, CURSOR_WATCH);
@@ -446,19 +447,25 @@ void on_keypress(XKeyEvent *kev) {
446447 /* panning */
447448 case XK_h:
448449 case XK_Left:
449− changed = img_pan(&img, &win, PAN_LEFT);
450+ changed = img_pan(&img, &win, PAN_LEFT, ctrl);
450451 break;
451452 case XK_j:
452453 case XK_Down:
453− changed = img_pan(&img, &win, PAN_DOWN);
454+ changed = img_pan(&img, &win, PAN_DOWN, ctrl);
454455 break;
455456 case XK_k:
456457 case XK_Up:
457− changed = img_pan(&img, &win, PAN_UP);
458+ changed = img_pan(&img, &win, PAN_UP, ctrl);
458459 break;
459460 case XK_l:
460461 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);
462469 break;
463470
464471 case XK_H:
@@ -632,23 +639,23 @@ void on_buttonpress(XButtonEvent *bev) {
632639 if (mask == ControlMask)
633640 changed = img_zoom_in(&img, &win);
634641 else if (mask == ShiftMask)
635− changed = img_pan(&img, &win, PAN_LEFT);
642+ changed = img_pan(&img, &win, PAN_LEFT, 0);
636643 else
637− changed = img_pan(&img, &win, PAN_UP);
644+ changed = img_pan(&img, &win, PAN_UP, 0);
638645 break;
639646 case Button5:
640647 if (mask == ControlMask)
641648 changed = img_zoom_out(&img, &win);
642649 else if (mask == ShiftMask)
643− changed = img_pan(&img, &win, PAN_RIGHT);
650+ changed = img_pan(&img, &win, PAN_RIGHT, 0);
644651 else
645− changed = img_pan(&img, &win, PAN_DOWN);
652+ changed = img_pan(&img, &win, PAN_DOWN, 0);
646653 break;
647654 case 6:
648− changed = img_pan(&img, &win, PAN_LEFT);
655+ changed = img_pan(&img, &win, PAN_LEFT, 0);
649656 break;
650657 case 7:
651− changed = img_pan(&img, &win, PAN_RIGHT);
658+ changed = img_pan(&img, &win, PAN_RIGHT, 0);
652659 break;
653660 }
654661 } else {
M sxiv.1 View
@@ -138,17 +138,29 @@ Pan image [move selection] up.
138138 .BR l ", " Right
139139 Pan image [move selection] right.
140140 .TP
141−.BR H
141+.B H
142142 Pan to left image edge.
143143 .TP
144−.BR J
144+.B J
145145 Pan to bottom image edge.
146146 .TP
147−.BR K
147+.B K
148148 Pan to top image edge.
149149 .TP
150−.BR L
150+.B L
151151 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.
152164 .SS Rotation
153165 .TP
154166 .B <