~petersanchez/st

fbc589d50603e8b0de9239e4800e227ab5d0ea69 — Alexander Sedov 10 years ago 6fc471c
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.
2 files changed, 18 insertions(+), 7 deletions(-)

M TODO
M st.c
M TODO => TODO +0 -4
@@ 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
----

M st.c => st.c +18 -3
@@ 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;