Remove long text being cropped/wrapped to standard 80x24 on launch.
To be more specific, now tty creation is delayed until X window is actually mapped; last ConfigureNotify before mapping determines initial tty size. Please report problems if there are any.
This commit is contained in:
		
				
					committed by
					
						 Roberto E. Vargas Caballero
						Roberto E. Vargas Caballero
					
				
			
			
				
	
			
			
			
						parent
						
							6fc471ccc6
						
					
				
				
					commit
					fbc589d506
				
			
							
								
								
									
										4
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								TODO
									
									
									
									
									
								
							| @@ -26,10 +26,6 @@ bugs | |||||||
| * fix rows and column definition in fixed geometry | * fix rows and column definition in fixed geometry | ||||||
| * fix -e handling | * fix -e handling | ||||||
| * remove DEC test sequence when appropriate | * remove DEC test sequence when appropriate | ||||||
| * When some application outputting long text is run in the shell init scripts, |  | ||||||
|   then this text might be stripped to the standard 80x25 due to st running the |  | ||||||
|   virtual terminal at first priority. Maybe the vt initialisation could be |  | ||||||
|   moved somewhere after knowing the right window size. |  | ||||||
|  |  | ||||||
| misc | misc | ||||||
| ---- | ---- | ||||||
|   | |||||||
							
								
								
									
										21
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								st.c
									
									
									
									
									
								
							| @@ -3520,10 +3520,28 @@ resize(XEvent *e) { | |||||||
| void | void | ||||||
| run(void) { | run(void) { | ||||||
| 	XEvent ev; | 	XEvent ev; | ||||||
|  | 	int w = xw.w, h = xw.h; | ||||||
| 	fd_set rfd; | 	fd_set rfd; | ||||||
| 	int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0; | 	int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0; | ||||||
| 	struct timeval drawtimeout, *tv = NULL, now, last, lastblink; | 	struct timeval drawtimeout, *tv = NULL, now, last, lastblink; | ||||||
|  |  | ||||||
|  | 	/* Waiting for window mapping */ | ||||||
|  | 	while(1) { | ||||||
|  | 		XNextEvent(xw.dpy, &ev); | ||||||
|  | 		if(ev.type == ConfigureNotify) { | ||||||
|  | 			w = ev.xconfigure.width; | ||||||
|  | 			h = ev.xconfigure.height; | ||||||
|  | 		} else if(ev.type == MapNotify) { | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if(!xw.isfixed) | ||||||
|  | 		cresize(w, h); | ||||||
|  | 	else | ||||||
|  | 		cresize(xw.fw, xw.fh); | ||||||
|  | 	ttynew(); | ||||||
|  |  | ||||||
| 	gettimeofday(&lastblink, NULL); | 	gettimeofday(&lastblink, NULL); | ||||||
| 	gettimeofday(&last, NULL); | 	gettimeofday(&last, NULL); | ||||||
|  |  | ||||||
| @@ -3673,10 +3691,7 @@ run: | |||||||
| 	XSetLocaleModifiers(""); | 	XSetLocaleModifiers(""); | ||||||
| 	tnew(80, 24); | 	tnew(80, 24); | ||||||
| 	xinit(); | 	xinit(); | ||||||
| 	ttynew(); |  | ||||||
| 	selinit(); | 	selinit(); | ||||||
| 	if(xw.isfixed) |  | ||||||
| 		cresize(xw.h, xw.w); |  | ||||||
| 	run(); | 	run(); | ||||||
|  |  | ||||||
| 	return 0; | 	return 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user