diff options
Diffstat (limited to 'thumbs.c')
-rw-r--r-- | thumbs.c | 39 |
1 files changed, 38 insertions, 1 deletions
@@ -115,7 +115,6 @@ void tns_render(tns_t *tns, win_t *win) { } tns_highlight(tns, win, -1); - win_draw(win); } void tns_highlight(tns_t *tns, win_t *win, int old) { @@ -132,4 +131,42 @@ void tns_highlight(tns_t *tns, win_t *win, int old) { t = &tns->thumbs[tns->sel]; win_draw_rect(win, t->x - 2, t->y - 2, t->w + 4, t->h + 4, True); } + + win_draw(win); +} + +void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { + int sel; + + if (!tns || !win) + return; + + sel = tns->sel; + + switch (dir) { + case MOVE_LEFT: + if (sel % tns->cols > 0) { + --tns->sel; + tns_highlight(tns, win, sel); + } + break; + case MOVE_RIGHT: + if (sel % tns->cols < tns->cols - 1 && sel < tns->cnt - 1) { + ++tns->sel; + tns_highlight(tns, win, sel); + } + break; + case MOVE_UP: + if (sel / tns->cols > 0) { + tns->sel -= tns->cols; + tns_highlight(tns, win, sel); + } + break; + case MOVE_DOWN: + if (sel / tns->cols < tns->rows - 1 && sel + tns->cols < tns->cnt) { + tns->sel += tns->cols; + tns_highlight(tns, win, sel); + } + break; + } } |