Browse Source

handle count prefix in thumbnail movements

master
baskerville 12 years ago
parent
commit
c330b55de4
5 changed files with 21 additions and 18 deletions
  1. +1
    -1
      README.md
  2. +1
    -1
      commands.c
  3. +12
    -4
      sxiv.1
  4. +6
    -11
      thumbs.c
  5. +1
    -1
      thumbs.h

+ 1
- 1
README.md View File

@@ -99,7 +99,7 @@ The following general key commands are available:


The following additional key commands are available in *thumbnail mode*: The following additional key commands are available in *thumbnail mode*:


h,j,k,l Move selection left/down/up/right
h,j,k,l Move selection left/down/up/right [count] times
Ctrl-j,k Scroll thumbnail grid one window height down/up Ctrl-j,k Scroll thumbnail grid one window height down/up


The following additional key commands are available in *image mode*: The following additional key commands are available in *image mode*:


+ 1
- 1
commands.c View File

@@ -209,7 +209,7 @@ bool it_scroll_move(arg_t a) {
if (mode == MODE_IMAGE) if (mode == MODE_IMAGE)
return img_pan(&img, dir, prefix); return img_pan(&img, dir, prefix);
else else
return tns_move_selection(&tns, dir);
return tns_move_selection(&tns, dir, prefix);
} }


bool it_scroll_screen(arg_t a) { bool it_scroll_screen(arg_t a) {


+ 12
- 4
sxiv.1 View File

@@ -126,16 +126,24 @@ Remove current image from file list and go to next image.
The following keyboard commands are only available in thumbnail mode: The following keyboard commands are only available in thumbnail mode:
.TP .TP
.BR h ", " Left .BR h ", " Left
Move selection left.
Move selection left
.I count
times.
.TP .TP
.BR j ", " Down .BR j ", " Down
Move selection down.
Move selection down
.I count
times.
.TP .TP
.BR k ", " Up .BR k ", " Up
Move selection up.
Move selection up
.I count
times.
.TP .TP
.BR l ", " Right .BR l ", " Right
Move selection right.
Move selection right
.I count
times.
.TP .TP
.BR Ctrl-j ", " Ctrl-Down .BR Ctrl-j ", " Ctrl-Down
Scroll thumbnail grid one window height down. Scroll thumbnail grid one window height down.


+ 6
- 11
thumbs.c View File

@@ -390,8 +390,9 @@ void tns_highlight(tns_t *tns, int n, bool hl) {
} }
} }


bool tns_move_selection(tns_t *tns, direction_t dir) {
bool tns_move_selection(tns_t *tns, direction_t dir, int count) {
int old; int old;
int c = (count > 0 ? count : 1);


if (tns == NULL || tns->thumbs == NULL) if (tns == NULL || tns->thumbs == NULL)
return false; return false;
@@ -400,22 +401,16 @@ bool tns_move_selection(tns_t *tns, direction_t dir) {


switch (dir) { switch (dir) {
case DIR_UP: case DIR_UP:
if (tns->sel >= tns->cols)
tns->sel -= tns->cols;
tns->sel = MAX(tns->sel - c * tns->cols, tns->sel % tns->cols);
break; break;
case DIR_DOWN: case DIR_DOWN:
if (tns->sel + tns->cols < tns->cnt)
tns->sel += tns->cols;
else if (tns->sel < tns->cnt - tns->cnt % tns->cols)
tns->sel = tns->cnt - 1;
tns->sel = MIN(tns->sel + c * tns->cols, tns->cols * ((tns->cnt - 1) / tns->cols) + MIN((tns->cnt - 1) % tns->cols, tns->sel % tns->cols));
break; break;
case DIR_LEFT: case DIR_LEFT:
if (tns->sel > 0)
tns->sel--;
tns->sel = MAX(tns->sel - c, 0);
break; break;
case DIR_RIGHT: case DIR_RIGHT:
if (tns->sel < tns->cnt - 1)
tns->sel++;
tns->sel = MIN(tns->sel + c, tns->cnt - 1);
break; break;
} }




+ 1
- 1
thumbs.h View File

@@ -61,7 +61,7 @@ bool tns_load(tns_t*, int, const fileinfo_t*, bool, bool);
void tns_render(tns_t*); void tns_render(tns_t*);
void tns_highlight(tns_t*, int, bool); void tns_highlight(tns_t*, int, bool);


bool tns_move_selection(tns_t*, direction_t);
bool tns_move_selection(tns_t*, direction_t, int);
bool tns_scroll(tns_t*, direction_t, bool); bool tns_scroll(tns_t*, direction_t, bool);


int tns_translate(tns_t*, int, int); int tns_translate(tns_t*, int, int);


Loading…
Cancel
Save