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
					
				
			
			
				
	
			
			
			
						parent
						
							6fc471ccc6
						
					
				
				
					commit
					fbc589d506
				
			
							
								
								
									
										4
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								TODO
									
									
									
									
									
								
							@@ -26,10 +26,6 @@ bugs
 | 
			
		||||
* fix rows and column definition in fixed geometry
 | 
			
		||||
* fix -e handling
 | 
			
		||||
* 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
 | 
			
		||||
----
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								st.c
									
									
									
									
									
								
							@@ -3520,10 +3520,28 @@ resize(XEvent *e) {
 | 
			
		||||
void
 | 
			
		||||
run(void) {
 | 
			
		||||
	XEvent ev;
 | 
			
		||||
	int w = xw.w, h = xw.h;
 | 
			
		||||
	fd_set rfd;
 | 
			
		||||
	int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0;
 | 
			
		||||
	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(&last, NULL);
 | 
			
		||||
 | 
			
		||||
@@ -3673,10 +3691,7 @@ run:
 | 
			
		||||
	XSetLocaleModifiers("");
 | 
			
		||||
	tnew(80, 24);
 | 
			
		||||
	xinit();
 | 
			
		||||
	ttynew();
 | 
			
		||||
	selinit();
 | 
			
		||||
	if(xw.isfixed)
 | 
			
		||||
		cresize(xw.h, xw.w);
 | 
			
		||||
	run();
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user