From 62f4ab037aad918d5b6c92b423e54f29b5c1ecf8 Mon Sep 17 00:00:00 2001
From: Bert <ber.t@gmx.com>
Date: Fri, 18 Feb 2011 15:21:13 +0100
Subject: [PATCH] Fixed moving of selection while loading thumbnails

---
 thumbs.c | 6 +++---
 thumbs.h | 3 +--
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/thumbs.c b/thumbs.c
index 3f187fc..ae12614 100644
--- a/thumbs.c
+++ b/thumbs.c
@@ -32,7 +32,7 @@ void tns_init(tns_t *tns, int cnt) {
 	if (!tns)
 		return;
 
-	tns->cnt = tns->first = tns->sel = 0;
+	tns->cnt = tns->first = tns->sel = tns->vis = 0;
 	tns->thumbs = (thumb_t*) s_malloc(cnt * sizeof(thumb_t));
 }
 
@@ -115,8 +115,8 @@ void tns_render(tns_t *tns, win_t *win) {
 			x += thumb_dim;
 		}
 	}
+	tns->vis = i - tns->first;
 
-	printf("%d, %d\n", tns->sel, tns->cnt);
 	tns_highlight(tns, win, -1);
 }
 
@@ -166,7 +166,7 @@ void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) {
 			}
 			break;
 		case MOVE_DOWN:
-			if (sel / tns->cols < tns->rows - 1 && sel + tns->cols < tns->cnt) {
+			if (sel / tns->cols < tns->rows - 1 && sel + tns->cols < tns->vis) {
 				tns->sel += tns->cols;
 				tns_highlight(tns, win, sel);
 			}
diff --git a/thumbs.h b/thumbs.h
index 157173d..9c3c7d0 100644
--- a/thumbs.h
+++ b/thumbs.h
@@ -45,10 +45,9 @@ typedef struct tns_s {
 	int rows;
 	int first;
 	int sel;
+	int vis;
 } tns_t;
 
-extern const int thumb_dim;
-
 void tns_init(tns_t*, int);
 void tns_free(tns_t*, win_t*);