diff options
author | Jules Maselbas <jules.maselbas@grenoble-inp.org> | 2018-06-27 17:08:30 +0200 |
---|---|---|
committer | terriblephrases <terriblephrases@gmail.com> | 2018-12-16 02:10:06 +0100 |
commit | 62371f0b21965e029644b7ef2fbd00c81d56c665 (patch) | |
tree | 36278531d3c0c61f1df07202078c37c5fe2ea02c /x.c | |
parent | ee16dfb8f38f159011a1c45e8c6ba4b39e267bc9 (diff) |
Fix crash on resize
Prevent to realloc xw.specbuc with a negative number of col.
Add proper hints for the minimal size, for one character.
Diffstat (limited to 'x.c')
-rw-r--r-- | x.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -699,6 +699,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); @@ -708,8 +710,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, @@ -833,15 +835,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; } |