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) | ||||
| 		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)); | ||||
| 	memset(tns->thumbs, 0, cnt * sizeof(thumb_t)); | ||||
| } | ||||
| 
 | ||||
| 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; | ||||
| 		} | ||||
| 	} | ||||
| 	tns->vis = i - tns->first; | ||||
| 
 | ||||
| 	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) { | ||||
| 	int sel; | ||||
| 	int sel, old; | ||||
| 
 | ||||
| 	if (!tns || !win) | ||||
| 		return; | ||||
| @ -148,30 +148,28 @@ void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { | ||||
| 
 | ||||
| 	switch (dir) { | ||||
| 		case MOVE_LEFT: | ||||
| 			if (sel % tns->cols > 0) { | ||||
| 				--tns->sel; | ||||
| 				tns_highlight(tns, win, sel); | ||||
| 			} | ||||
| 			if (sel % tns->cols > 0) | ||||
| 				--sel; | ||||
| 			break; | ||||
| 		case MOVE_RIGHT: | ||||
| 			if (sel % tns->cols < tns->cols - 1 && sel < tns->cnt - 1) { | ||||
| 				++tns->sel; | ||||
| 				tns_highlight(tns, win, sel); | ||||
| 			} | ||||
| 			if (sel % tns->cols < tns->cols - 1 && sel < tns->cnt - 1) | ||||
| 				++sel; | ||||
| 			break; | ||||
| 		case MOVE_UP: | ||||
| 			if (sel / tns->cols > 0) { | ||||
| 				tns->sel -= tns->cols; | ||||
| 				tns_highlight(tns, win, sel); | ||||
| 			} | ||||
| 			if (sel / tns->cols > 0) | ||||
| 				sel -= tns->cols; | ||||
| 			break; | ||||
| 		case MOVE_DOWN: | ||||
| 			if (sel / tns->cols < tns->rows - 1 && sel + tns->cols < tns->vis) { | ||||
| 				tns->sel += tns->cols; | ||||
| 				tns_highlight(tns, win, sel); | ||||
| 			} | ||||
| 			if (sel / tns->cols < tns->rows - 1 && sel + tns->cols < tns->cnt) | ||||
| 				sel += tns->cols; | ||||
| 			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) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert