Remove long text being cropped/wrapped to standard 80x24 on launch. - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit fbc589d50603e8b0de9239e4800e227ab5d0ea69
 (DIR) parent 6fc471ccc660b305cf836dcb8d57cdbffb4ed017
 (HTM) 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:
         M TODO                                |       4 ----
         M st.c                                |      21 ++++++++++++++++++---
       
       2 files changed, 18 insertions(+), 7 deletions(-)
       ---
 (DIR) 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
        ----
 (DIR) 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;