Browse Source

move code into new xresize func, add early exit to resize

Devin J. Pohly 14 years ago
parent
commit
1243581772
1 changed files with 14 additions and 8 deletions
  1. 14 8
      st.c

+ 14 - 8
st.c

@@ -190,6 +190,7 @@ static void xdrawcursor(void);
 static void xinit(void);
 static void xloadcols(void);
 static void xseturgency(int);
+static void xresize(int, int);
 
 static void expose(XEvent *);
 static void visibility(XEvent *);
@@ -1257,6 +1258,14 @@ tresize(int col, int row) {
 	tsetscroll(0, row-1);
 }
 
+void
+xresize(int col, int row) {
+	xw.bufw = MAX(1, col * xw.cw);
+	xw.bufh = MAX(1, row * xw.ch);
+	XFreePixmap(xw.dis, xw.buf);
+	xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr));
+}
+
 void
 xloadcols(void) {
 	int i, r, g, b;
@@ -1615,16 +1624,13 @@ resize(XEvent *e) {
 	
 	xw.w = e->xconfigure.width;
 	xw.h = e->xconfigure.height;
-	xw.bufw = xw.w - 2*BORDER;
-	xw.bufh = xw.h - 2*BORDER;
-	col = xw.bufw / xw.cw;
-	row = xw.bufh / xw.ch;
+	col = (xw.w - 2*BORDER) / xw.cw;
+	row = (xw.h - 2*BORDER) / xw.ch;
+	if(col == term.col && row == term.row)
+		return;
 	tresize(col, row);
 	ttyresize(col, row);
-	xw.bufh = MAX(1, xw.bufh);
-	xw.bufw = MAX(1, xw.bufw);
-	XFreePixmap(xw.dis, xw.buf);
-	xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr));
+	xresize(col, row);
 }
 
 void