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