diff options
| -rw-r--r-- | thumbs.c | 16 | 
1 files changed, 9 insertions, 7 deletions
@@ -390,27 +390,29 @@ void tns_highlight(tns_t *tns, int n, bool hl) {  	}  } -bool tns_move_selection(tns_t *tns, direction_t dir, int count) { -	int old; -    int c = (count > 0 ? count : 1); +bool tns_move_selection(tns_t *tns, direction_t dir, int cnt) { +	int old, max;  	if (tns == NULL || tns->thumbs == NULL)  		return false;  	old = tns->sel; +	cnt = cnt > 1 ? cnt : 1;  	switch (dir) {  		case DIR_UP: -            tns->sel = MAX(tns->sel - c * tns->cols, tns->sel % tns->cols); +			tns->sel = MAX(tns->sel - cnt * tns->cols, tns->sel % tns->cols);  			break;  		case DIR_DOWN: -            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)); +			max = tns->cols * ((tns->cnt - 1) / tns->cols) + +			      MIN((tns->cnt - 1) % tns->cols, tns->sel % tns->cols); +			tns->sel = MIN(tns->sel + cnt * tns->cols, max);  			break;  		case DIR_LEFT: -            tns->sel = MAX(tns->sel - c, 0); +			tns->sel = MAX(tns->sel - cnt, 0);  			break;  		case DIR_RIGHT: -			tns->sel = MIN(tns->sel + c, tns->cnt - 1); +			tns->sel = MIN(tns->sel + cnt, tns->cnt - 1);  			break;  	}  | 
