Nicer tns_move_selection
This commit is contained in:
		
							parent
							
								
									62f4ab037a
								
							
						
					
					
						commit
						c6726ed331
					
				
							
								
								
									
										36
									
								
								thumbs.c
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								thumbs.c
									
									
									
									
									
								
							| @ -32,8 +32,9 @@ void tns_init(tns_t *tns, int cnt) { | |||||||
| 	if (!tns) | 	if (!tns) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	tns->cnt = tns->first = tns->sel = tns->vis = 0; | 	tns->cnt = tns->first = tns->sel = 0; | ||||||
| 	tns->thumbs = (thumb_t*) s_malloc(cnt * sizeof(thumb_t)); | 	tns->thumbs = (thumb_t*) s_malloc(cnt * sizeof(thumb_t)); | ||||||
|  | 	memset(tns->thumbs, 0, cnt * sizeof(thumb_t)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void tns_free(tns_t *tns, win_t *win) { | void tns_free(tns_t *tns, win_t *win) { | ||||||
| @ -115,7 +116,6 @@ void tns_render(tns_t *tns, win_t *win) { | |||||||
| 			x += thumb_dim; | 			x += thumb_dim; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	tns->vis = i - tns->first; |  | ||||||
| 
 | 
 | ||||||
| 	tns_highlight(tns, win, -1); | 	tns_highlight(tns, win, -1); | ||||||
| } | } | ||||||
| @ -139,7 +139,7 @@ void tns_highlight(tns_t *tns, win_t *win, int old) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { | void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { | ||||||
| 	int sel; | 	int sel, old; | ||||||
| 
 | 
 | ||||||
| 	if (!tns || !win) | 	if (!tns || !win) | ||||||
| 		return; | 		return; | ||||||
| @ -148,30 +148,28 @@ void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { | |||||||
| 
 | 
 | ||||||
| 	switch (dir) { | 	switch (dir) { | ||||||
| 		case MOVE_LEFT: | 		case MOVE_LEFT: | ||||||
| 			if (sel % tns->cols > 0) { | 			if (sel % tns->cols > 0) | ||||||
| 				--tns->sel; | 				--sel; | ||||||
| 				tns_highlight(tns, win, sel); |  | ||||||
| 			} |  | ||||||
| 			break; | 			break; | ||||||
| 		case MOVE_RIGHT: | 		case MOVE_RIGHT: | ||||||
| 			if (sel % tns->cols < tns->cols - 1 && sel < tns->cnt - 1) { | 			if (sel % tns->cols < tns->cols - 1 && sel < tns->cnt - 1) | ||||||
| 				++tns->sel; | 				++sel; | ||||||
| 				tns_highlight(tns, win, sel); |  | ||||||
| 			} |  | ||||||
| 			break; | 			break; | ||||||
| 		case MOVE_UP: | 		case MOVE_UP: | ||||||
| 			if (sel / tns->cols > 0) { | 			if (sel / tns->cols > 0) | ||||||
| 				tns->sel -= tns->cols; | 				sel -= tns->cols; | ||||||
| 				tns_highlight(tns, win, sel); |  | ||||||
| 			} |  | ||||||
| 			break; | 			break; | ||||||
| 		case MOVE_DOWN: | 		case MOVE_DOWN: | ||||||
| 			if (sel / tns->cols < tns->rows - 1 && sel + tns->cols < tns->vis) { | 			if (sel / tns->cols < tns->rows - 1 && sel + tns->cols < tns->cnt) | ||||||
| 				tns->sel += tns->cols; | 				sel += tns->cols; | ||||||
| 				tns_highlight(tns, win, sel); |  | ||||||
| 			} |  | ||||||
| 			break; | 			break; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	if (sel != tns->sel && tns->thumbs[sel].x != 0) { | ||||||
|  | 		old = tns->sel; | ||||||
|  | 		tns->sel = sel; | ||||||
|  | 		tns_highlight(tns, win, old); | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int tns_translate(tns_t *tns, int x, int y) { | int tns_translate(tns_t *tns, int x, int y) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert