Xinqi Bao's Git

fix mem leak in cleanup()
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index fb1e326..1ee4ea2 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -440,7 +440,7 @@ buttonpress(XEvent *e)
                        arg.ui = 1 << i;
                } else if (ev->x < x + blw)
                        click = ClkLtSymbol;
-               else if (ev->x > selmon->ww - TEXTW(stext))
+               else if (ev->x > selmon->ww - (int)TEXTW(stext))
                        click = ClkStatusText;
                else
                        click = ClkWinTitle;
@@ -487,6 +487,7 @@ cleanup(void)
                drw_cur_free(drw, cursor[i]);
        for (i = 0; i < LENGTH(colors); i++)
                free(scheme[i]);
+       free(scheme);
        XDestroyWindow(dpy, wmcheckwin);
        drw_free(drw);
        XSync(dpy, False);
@@ -702,6 +703,9 @@ drawbar(Monitor *m)
        unsigned int i, occ = 0, urg = 0;
        Client *c;
 
+       if (!m->showbar)
+               return;
+
        /* draw status first so it can be overdrawn by tags later */
        if (m == selmon) { /* status is only drawn on selected monitor */
                drw_setscheme(drw, scheme[SchemeNorm]);
@@ -835,7 +839,7 @@ focusstack(const Arg *arg)
 {
        Client *c = NULL, *i;
 
-       if (!selmon->sel)
+       if (!selmon->sel || (selmon->sel->isfullscreen && lockfullscreen))
                return;
        if (arg->i > 0) {
                for (c = selmon->sel->next; c && !ISVISIBLE(c); c = c->next);
@@ -1689,11 +1693,13 @@ tile(Monitor *m)
                if (i < m->nmaster) {
                        h = (m->wh - my) / (MIN(n, m->nmaster) - i);
                        resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0);
-                       my += HEIGHT(c);
+                       if (my + HEIGHT(c) < m->wh)
+                               my += HEIGHT(c);
                } else {
                        h = (m->wh - ty) / (n - i);
                        resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0);
-                       ty += HEIGHT(c);
+                       if (ty + HEIGHT(c) < m->wh)
+                               ty += HEIGHT(c);
                }
 }