handle count prefix in thumbnail movements
This commit is contained in:
17
thumbs.c
17
thumbs.c
@ -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 c = (count > 0 ? count : 1);
|
||||
|
||||
if (tns == NULL || tns->thumbs == NULL)
|
||||
return false;
|
||||
@ -400,22 +401,16 @@ bool tns_move_selection(tns_t *tns, direction_t dir) {
|
||||
|
||||
switch (dir) {
|
||||
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;
|
||||
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;
|
||||
case DIR_LEFT:
|
||||
if (tns->sel > 0)
|
||||
tns->sel--;
|
||||
tns->sel = MAX(tns->sel - c, 0);
|
||||
break;
|
||||
case DIR_RIGHT:
|
||||
if (tns->sel < tns->cnt - 1)
|
||||
tns->sel++;
|
||||
tns->sel = MIN(tns->sel + c, tns->cnt - 1);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user