st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 12435817723b44189bd412937403c401e5bbc136
parent 722688d989bae9ce5e71507be5656c9b78ae7834
Author: Devin J. Pohly <djpohly@djpohly.com>
Date:   Mon, 25 Oct 2010 15:10:41 -0400

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

Diffstat:
Mst.c | 22++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/st.c b/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 *);
@@ -1258,6 +1259,14 @@ tresize(int col, int row) {
 }
 
 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;
     XColor color;
@@ -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