Krolyxon
Commit 867940e

Branches

Refs →

nsxiv867940e

Pan by pixel count, if number prefix given

Author
Bert Münnich
Date
2011-10-16 17:39 +0200
Parent
dc727b8
Commit
867940ea85495ac4e8e23efbb574fd9d86bccf42

+25 −10

4 files changed

  1. M commands.c +2 −2
  2. M image.c +18 −5
  3. M image.h +1 −1
  4. M main.c +4 −2
M commands.c View
@@ -184,7 +184,7 @@ bool it_move(arg_t a) {
184184 direction_t dir = (direction_t) a;
185185
186186 if (mode == MODE_IMAGE)
187− return img_pan(&img, dir, false);
187+ return img_pan(&img, dir, prefix);
188188 else
189189 return tns_move_selection(&tns, dir);
190190 }
@@ -193,7 +193,7 @@ bool i_pan_screen(arg_t a) {
193193 direction_t dir = (direction_t) a;
194194
195195 if (mode == MODE_IMAGE)
196− return img_pan(&img, dir, true);
196+ return img_pan(&img, dir, -1);
197197 else
198198 return false;
199199 }
M image.c View
@@ -576,19 +576,32 @@ bool img_move(img_t *img, int dx, int dy) {
576576 }
577577 }
578578
579−bool img_pan(img_t *img, direction_t dir, bool screen) {
579+bool img_pan(img_t *img, direction_t dir, int d) {
580+ /* d < 0: screen-wise
581+ * d = 0: 1/5 of screen
582+ * d > 0: num of pixels
583+ */
584+ int x, y;
585+
580586 if (img == NULL || img->im == NULL || img->win == NULL)
581587 return false;
582588
589+ if (d > 0) {
590+ x = y = MAX(1, d * img->zoom);
591+ } else {
592+ x = img->win->w / (d < 0 ? 1 : 5);
593+ y = img->win->h / (d < 0 ? 1 : 5);
594+ }
595+
583596 switch (dir) {
584597 case DIR_LEFT:
585− return img_move(img, img->win->w / (screen ? 1 : 5), 0);
598+ return img_move(img, x, 0);
586599 case DIR_RIGHT:
587− return img_move(img, img->win->w / (screen ? 1 : 5) * -1, 0);
600+ return img_move(img, -x, 0);
588601 case DIR_UP:
589− return img_move(img, 0, img->win->h / (screen ? 1 : 5));
602+ return img_move(img, 0, y);
590603 case DIR_DOWN:
591− return img_move(img, 0, img->win->h / (screen ? 1 : 5) * -1);
604+ return img_move(img, 0, -y);
592605 }
593606 return false;
594607 }
M image.h View
@@ -76,7 +76,7 @@ bool img_zoom_in(img_t*);
7676 bool img_zoom_out(img_t*);
7777
7878 bool img_move(img_t*, int, int);
79−bool img_pan(img_t*, direction_t, bool);
79+bool img_pan(img_t*, direction_t, int);
8080 bool img_pan_edge(img_t*, direction_t);
8181
8282 void img_rotate_left(img_t*);
M main.c View
@@ -337,9 +337,11 @@ void on_keypress(XKeyEvent *kev) {
337337
338338 XLookupString(kev, &key, 1, &ksym, NULL);
339339
340− if (key >= '0' && key <= '9' && (kev->state & ControlMask) == 0) {
340+ if ((ksym == XK_Escape || (key >= '0' && key <= '9')) &&
341+ (kev->state & ControlMask) == 0)
342+ {
341343 /* number prefix for commands */
342− prefix = prefix * 10 + (int) (key - '0');
344+ prefix = ksym == XK_Escape ? 0 : prefix * 10 + (int) (key - '0');
343345 return;
344346 }
345347