X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=st.c;h=cf329fd385b8961b2ac3e6cb20a2f2771adbdddf;hb=da4a77edbebbb75fcb549c5ecac326d5e59aeef5;hp=d483d850766760c70ac3f5e5d3dd486be7d1c1c4;hpb=59fe59d3d1f922ec3a99c758e54ab88cfdf939be;p=st.git diff --git a/st.c b/st.c index d483d85..cf329fd 100644 --- a/st.c +++ b/st.c @@ -739,6 +739,10 @@ execsh(void) { char **args; char *envshell = getenv("SHELL"); + unsetenv("COLUMNS"); + unsetenv("LINES"); + unsetenv("TERMCAP"); + DEFAULT(envshell, SHELL); putenv("TERM="TNAME); args = opt_cmd ? opt_cmd : (char*[]){envshell, "-i", NULL}; @@ -841,7 +845,8 @@ ttyresize(int x, int y) { w.ws_row = term.row; w.ws_col = term.col; - w.ws_xpixel = w.ws_ypixel = 0; + w.ws_xpixel = xw.w; + w.ws_ypixel = xw.h; if(ioctl(cmdfd, TIOCSWINSZ, &w) < 0) fprintf(stderr, "Couldn't set window size: %s\n", SERRNO); } @@ -1322,12 +1327,12 @@ csihandle(void) { } break; case 'G': /* CHA -- Move to */ - case '`': /* XXX: HPA -- same? */ + case '`': /* HPA */ DEFAULT(csiescseq.arg[0], 1); tmoveto(csiescseq.arg[0]-1, term.c.y); break; case 'H': /* CUP -- Move to */ - case 'f': /* XXX: HVP -- same? */ + case 'f': /* HVP */ DEFAULT(csiescseq.arg[0], 1); DEFAULT(csiescseq.arg[1], 1); tmoveto(csiescseq.arg[1]-1, csiescseq.arg[0]-1); @@ -1910,12 +1915,15 @@ xinit(void) { xw.fx = sw + xw.fx - xw.fw - 1; if(xw.fy < 0) xw.fy = sh + xw.fy - xw.fh - 1; + + xw.h = xw.fh; + xw.w = xw.fw; } else { /* window - default size */ xw.h = 2*BORDER + term.row * xw.ch; xw.w = 2*BORDER + term.col * xw.cw; - xw.fw = xw.w; - xw.fh = xw.h; + xw.fx = 0; + xw.fy = 0; } /* font */ @@ -1940,7 +1948,7 @@ xinit(void) { parent = opt_embed ? strtol(opt_embed, NULL, 0) : XRootWindow(xw.dpy, xw.scr); xw.win = XCreateWindow(xw.dpy, parent, xw.fx, xw.fy, - xw.fw, xw.fh, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, + xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, XDefaultVisual(xw.dpy, xw.scr), CWBackPixel | CWBorderPixel | CWBitGravity | CWEventMask | CWColormap, @@ -2254,8 +2262,8 @@ resize(XEvent *e) { return; if(tresize(col, row)) draw(); - ttyresize(col, row); xresize(col, row); + ttyresize(col, row); } bool @@ -2310,6 +2318,7 @@ main(int argc, char *argv[]) { unsigned int wr, hr; xw.fw = xw.fh = xw.fx = xw.fy = 0; + xw.isfixed = False; for(i = 1; i < argc; i++) { switch(argv[i][0] != '-' || argv[i][2] ? -1 : argv[i][1]) {