diff options
| author | Bert <ber.t@gmx.com> | 2011-02-17 15:58:11 +0100 | 
|---|---|---|
| committer | Bert <ber.t@gmx.com> | 2011-02-17 15:58:11 +0100 | 
| commit | 095217b26f43b711c8ebc281110553ec788f7ebe (patch) | |
| tree | af8aab21420d8be7739ff43239e94b0a46133da7 | |
| parent | dc04bdc72f87a3f1ec3efe0aaaabbb3ca1455644 (diff) | |
Linked thumbnails to files
| -rw-r--r-- | main.c | 16 | ||||
| -rw-r--r-- | thumbs.c | 12 | ||||
| -rw-r--r-- | thumbs.h | 1 | 
3 files changed, 13 insertions, 16 deletions
| @@ -55,8 +55,6 @@ const char **filenames;  int filecnt, fileidx;  size_t filesize; -int tns_loaded; -  #define TITLE_LEN 256  char win_title[TITLE_LEN]; @@ -131,10 +129,8 @@ int main(int argc, char **argv) {  	win_open(&win);  	img_init(&img, &win); -	if (options->thumbnails) { -		tns_loaded = 0; +	if (options->thumbnails)  		tns_init(&tns, filecnt); -	}  	if (options->thumbnails == 2) {  		mode = MODE_THUMBS; @@ -161,7 +157,7 @@ void update_title() {  	if (mode == MODE_THUMBS) {  		n = snprintf(win_title, TITLE_LEN, "sxiv: [%d/%d] %s",  		             tns.cnt ? tns.sel + 1 : 0, tns.cnt, -								 tns.cnt ? tns.thumbs[tns.sel].filename : ""); +		             tns.cnt ? filenames[tns.sel] : "");  	} else {  		if (img.valid) {  			size = filesize; @@ -490,17 +486,17 @@ void run() {  	timeout = 0;  	while (1) { -		if (mode == MODE_THUMBS && tns_loaded < filecnt) { +		if (mode == MODE_THUMBS && tns.cnt < filecnt) {  			win_set_cursor(&win, CURSOR_WATCH);  			gettimeofday(&t0, 0); -			while (!XPending(win.env.dpy) && tns_loaded < filecnt) { -				tns_load(&tns, &win, filenames[tns_loaded++]); +			while (!XPending(win.env.dpy) && tns.cnt < filecnt) { +				tns_load(&tns, &win, filenames[tns.cnt]);  				gettimeofday(&t, 0);  				if (TV_TO_DOUBLE(t) - TV_TO_DOUBLE(t0) >= 0.25)  					break;  			} -			if (tns_loaded == filecnt) +			if (tns.cnt == filecnt)  				win_set_cursor(&win, CURSOR_ARROW);  			if (!XPending(win.env.dpy)) {  				redraw(); @@ -25,6 +25,7 @@  #include "thumbs.h"  #include "util.h" +extern Imlib_Image *im_broken;  const int thumb_dim = THUMB_SIZE + 10;  void tns_init(tns_t *tns, int cnt) { @@ -57,19 +58,20 @@ void tns_load(tns_t *tns, win_t *win, const char *filename) {  	if (!tns || !win || !filename)  		return; -	if (!(im = imlib_load_image(filename))) -		return; - -	imlib_context_set_image(im); +	if ((im = imlib_load_image(filename))) +		imlib_context_set_image(im); +	else +		imlib_context_set_image(im_broken);  	w = imlib_image_get_width();  	h = imlib_image_get_height();  	zw = (float) THUMB_SIZE / (float) w;  	zh = (float) THUMB_SIZE / (float) h;  	z = MIN(zw, zh); +	if (!im && z > 1.0) +		z = 1.0;  	t = &tns->thumbs[tns->cnt++]; -	t->filename = filename;  	t->w = z * w;  	t->h = z * h; @@ -23,7 +23,6 @@  typedef struct thumb_s {  	Pixmap pm; -	const char *filename;  	int x;  	int y;  	int w; | 
