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:
Alexander Sedov 2013-06-23 21:05:29 +04:00 committed by Roberto E. Vargas Caballero
parent 6fc471ccc6
commit fbc589d506
2 changed files with 18 additions and 7 deletions

4
TODO
View File

@ -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
View File

@ -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;