# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit fbc589d50603e8b0de9239e4800e227ab5d0ea69
    parent 6fc471ccc660b305cf836dcb8d57cdbffb4ed017
    Author: Alexander Sedov <alex0player@gmail.com>
    Date:   Sun, 23 Jun 2013 21:05:29 +0400

    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.

    Diffstat:
    MTODO | 4----
    Mst.c | 21++++++++++++++++++---

    2 files changed, 18 insertions(+), 7 deletions(-)
    diff --git a/TODO b/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
     ----
    diff --git a/st.c b/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;