resize from the top.
This commit is contained in:
		
							
								
								
									
										17
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								st.c
									
									
									
									
									
								
							| @@ -1060,12 +1060,25 @@ tresize(int col, int row) { | |||||||
| 	int i; | 	int i; | ||||||
| 	int minrow = MIN(row, term.row); | 	int minrow = MIN(row, term.row); | ||||||
| 	int mincol = MIN(col, term.col); | 	int mincol = MIN(col, term.col); | ||||||
|  | 	int slide = term.c.y - row + 1; | ||||||
|  |  | ||||||
| 	if(col < 1 || row < 1) | 	if(col < 1 || row < 1) | ||||||
| 		return; | 		return; | ||||||
|  |  | ||||||
| 	/* free uneeded rows */ | 	/* free unneeded rows */ | ||||||
| 	for(i = row; i < term.row; i++) { | 	i = 0; | ||||||
|  | 	if(slide > 0) { | ||||||
|  | 		/* slide screen to keep cursor where we expect it - | ||||||
|  | 		 * tscrollup would work here, but we can optimize to | ||||||
|  | 		 * memmove because we're freeing the earlier lines */ | ||||||
|  | 		for(/* i = 0 */; i < slide; i++) { | ||||||
|  | 			free(term.line[i]); | ||||||
|  | 			free(term.alt[i]); | ||||||
|  | 		} | ||||||
|  | 		memmove(term.line, term.line + slide, row * sizeof(Line)); | ||||||
|  | 		memmove(term.alt, term.alt + slide, row * sizeof(Line)); | ||||||
|  | 	} | ||||||
|  | 	for(i += row; i < term.row; i++) { | ||||||
| 		free(term.line[i]); | 		free(term.line[i]); | ||||||
| 		free(term.alt[i]); | 		free(term.alt[i]); | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user