]> git.armaanb.net Git - st.git/blobdiff - x.c
Fix crash on resize
[st.git] / x.c
diff --git a/x.c b/x.c
index c0bd890366995680a80e61954dc0e6586f35bfaf..00cb6b18658a3c7864da76e850d2a8cf4009b84d 100644 (file)
--- a/x.c
+++ b/x.c
@@ -672,6 +672,8 @@ cresize(int width, int height)
 
        col = (win.w - 2 * borderpx) / win.cw;
        row = (win.h - 2 * borderpx) / win.ch;
+       col = MAX(1, col);
+       row = MAX(1, row);
 
        tresize(col, row);
        xresize(col, row);
@@ -681,8 +683,8 @@ cresize(int width, int height)
 void
 xresize(int col, int row)
 {
-       win.tw = MAX(1, col * win.cw);
-       win.th = MAX(1, row * win.ch);
+       win.tw = col * win.cw;
+       win.th = row * win.ch;
 
        XFreePixmap(xw.dpy, xw.buf);
        xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h,
@@ -788,15 +790,17 @@ xhints(void)
 
        sizeh = XAllocSizeHints();
 
-       sizeh->flags = PSize | PResizeInc | PBaseSize;
+       sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize;
        sizeh->height = win.h;
        sizeh->width = win.w;
        sizeh->height_inc = win.ch;
        sizeh->width_inc = win.cw;
        sizeh->base_height = 2 * borderpx;
        sizeh->base_width = 2 * borderpx;
+       sizeh->min_height = win.ch + 2 * borderpx;
+       sizeh->min_width = win.cw + 2 * borderpx;
        if (xw.isfixed) {
-               sizeh->flags |= PMaxSize | PMinSize;
+               sizeh->flags |= PMaxSize;
                sizeh->min_width = sizeh->max_width = win.w;
                sizeh->min_height = sizeh->max_height = win.h;
        }