diff options
| author | Bert <ber.t@gmx.com> | 2011-02-19 09:47:53 +0100 | 
|---|---|---|
| committer | Bert <ber.t@gmx.com> | 2011-02-19 09:47:53 +0100 | 
| commit | a367d35ba0f9edf8a01f7d98d9f58df9df292c15 (patch) | |
| tree | 23bb1e805eac062c9902f0d7a61010c4fb2ed2dd | |
| parent | c6726ed331ed1fbe72fd28f48ebe41c4ccd721e0 (diff) | |
Update title when moving selection
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | main.c | 12 | ||||
| -rw-r--r-- | thumbs.c | 18 | ||||
| -rw-r--r-- | thumbs.h | 3 | 
4 files changed, 22 insertions, 13 deletions
| @@ -1,6 +1,6 @@  all: sxiv -VERSION=git-20110218 +VERSION=git-20110219  CC?=gcc  PREFIX?=/usr/local @@ -386,7 +386,7 @@ void on_keypress(XKeyEvent *kev) {  					else  						tns.sel = 0;  					mode = MODE_THUMBS; -					changed = 1; +					changed = tns.dirty = 1;  				}  				break; @@ -416,19 +416,19 @@ void on_keypress(XKeyEvent *kev) {  			/* move selection */  			case XK_h:  			case XK_Left: -				tns_move_selection(&tns, &win, MOVE_LEFT); +				changed = tns_move_selection(&tns, &win, MOVE_LEFT);  				break;  			case XK_j:  			case XK_Down: -				tns_move_selection(&tns, &win, MOVE_DOWN); +				changed = tns_move_selection(&tns, &win, MOVE_DOWN);  				break;  			case XK_k:  			case XK_Up: -				tns_move_selection(&tns, &win, MOVE_UP); +				changed = tns_move_selection(&tns, &win, MOVE_UP);  				break;  			case XK_l:  			case XK_Right: -				tns_move_selection(&tns, &win, MOVE_RIGHT); +				changed = tns_move_selection(&tns, &win, MOVE_RIGHT);  				break;  		}  	} @@ -594,6 +594,8 @@ void run() {  						timeout = 75000;  						if (mode == MODE_NORMAL)  							img.checkpan = 1; +						else +							tns.dirty = 1;  					}  					break;  				case ClientMessage: @@ -35,6 +35,7 @@ void tns_init(tns_t *tns, int cnt) {  	tns->cnt = tns->first = tns->sel = 0;  	tns->thumbs = (thumb_t*) s_malloc(cnt * sizeof(thumb_t));  	memset(tns->thumbs, 0, cnt * sizeof(thumb_t)); +	tns->dirty = 0;  }  void tns_free(tns_t *tns, win_t *win) { @@ -81,12 +82,14 @@ void tns_load(tns_t *tns, win_t *win, const char *filename) {  	imlib_render_image_part_on_drawable_at_size(0, 0, w, h,  	                                            0, 0, t->w, t->h);  	imlib_free_image(); + +	tns->dirty = 1;  }  void tns_render(tns_t *tns, win_t *win) {  	int i, cnt, x, y; -	if (!tns || !win) +	if (!tns || !tns->dirty || !win)  		return;  	tns->cols = MAX(1, win->w / thumb_dim); @@ -117,6 +120,8 @@ void tns_render(tns_t *tns, win_t *win) {  		}  	} +	tns->dirty = 0; +  	tns_highlight(tns, win, -1);  } @@ -138,13 +143,13 @@ void tns_highlight(tns_t *tns, win_t *win, int old) {  	win_draw(win);  } -void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { +int tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) {  	int sel, old;  	if (!tns || !win) -		return; +		return 0; -	sel = tns->sel; +	sel = old = tns->sel;  	switch (dir) {  		case MOVE_LEFT: @@ -165,11 +170,12 @@ void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) {  			break;  	} -	if (sel != tns->sel && tns->thumbs[sel].x != 0) { -		old = tns->sel; +	if (sel != old && tns->thumbs[sel].x != 0) {  		tns->sel = sel;  		tns_highlight(tns, win, old);  	} + +	return sel != old;  }  int tns_translate(tns_t *tns, int x, int y) { @@ -45,6 +45,7 @@ typedef struct tns_s {  	int rows;  	int first;  	int sel; +	unsigned char dirty;  } tns_t;  void tns_init(tns_t*, int); @@ -55,7 +56,7 @@ void tns_load(tns_t*, win_t*, const char*);  void tns_render(tns_t*, win_t*);  void tns_highlight(tns_t*, win_t*, int); -void tns_move_selection(tns_t*, win_t*, movedir_t); +int tns_move_selection(tns_t*, win_t*, movedir_t);  int tns_translate(tns_t*, int, int); | 
