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:
M | TODO | | | 4 | ---- |
M | st.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;