JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
applied Hiltjo's cleanup patch
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 4b43a18..d171fe2 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -267,7 +267,6 @@ static void (*handler[LASTEvent]) (XEvent *) = {
        [UnmapNotify] = unmapnotify
 };
 static Atom wmatom[WMLast], netatom[NetLast];
-static Bool otherwm;
 static Bool running = True;
 static Cursor cursor[CurLast];
 static Display *dpy;
@@ -372,10 +371,8 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact) {
                if(c->inch)
                        *h -= *h % c->inch;
                /* restore base dimensions */
-               *w += c->basew;
-               *h += c->baseh;
-               *w = MAX(*w, c->minw);
-               *h = MAX(*h, c->minh);
+               *w = MAX(*w + c->basew, c->minw);
+               *h = MAX(*h + c->baseh, c->minh);
                if(c->maxw)
                        *w = MIN(*w, c->maxw);
                if(c->maxh)
@@ -460,13 +457,10 @@ buttonpress(XEvent *e) {
 
 void
 checkotherwm(void) {
-       otherwm = False;
        xerrorxlib = XSetErrorHandler(xerrorstart);
        /* this causes an error if some other window manager is running */
        XSelectInput(dpy, DefaultRootWindow(dpy), SubstructureRedirectMask);
        XSync(dpy, False);
-       if(otherwm)
-               die("dwm: another window manager is already running\n");
        XSetErrorHandler(xerror);
        XSync(dpy, False);
 }
@@ -799,7 +793,7 @@ enternotify(XEvent *e) {
                unfocus(selmon->sel, True);
                selmon = m;
        }
-       focus(wintoclient(ev->window));
+       focus((wintoclient(ev->window)));
 }
 
 void
@@ -845,7 +839,7 @@ focusin(XEvent *e) { /* there are some broken focus acquiring clients */
 
 void
 focusmon(const Arg *arg) {
-       Monitor *m = NULL;
+       Monitor *m;
 
        if(!mons->next)
                return;
@@ -996,12 +990,11 @@ initfont(const char *fontstr) {
                XFreeStringList(missing);
        }
        if(dc.font.set) {
-               XFontSetExtents *font_extents;
                XFontStruct **xfonts;
                char **font_names;
 
                dc.font.ascent = dc.font.descent = 0;
-               font_extents = XExtentsOfFontSet(dc.font.set);
+               XExtentsOfFontSet(dc.font.set);
                n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
                for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) {
                        dc.font.ascent = MAX(dc.font.ascent, (*xfonts)->ascent);
@@ -1090,19 +1083,15 @@ killclient(const Arg *arg) {
 
 void
 manage(Window w, XWindowAttributes *wa) {
-       static Client cz;
        Client *c, *t = NULL;
        Window trans = None;
        XWindowChanges wc;
 
-       if(!(c = malloc(sizeof(Client))))
+       if(!(c = calloc(1, sizeof(Client))))
                die("fatal: could not malloc() %u bytes\n", sizeof(Client));
-       *c = cz;
        c->win = w;
        updatetitle(c);
-       if(XGetTransientForHint(dpy, w, &trans))
-               t = wintoclient(trans);
-       if(t) {
+       if(XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) {
                c->mon = t->mon;
                c->tags = t->tags;
        }
@@ -1117,7 +1106,7 @@ manage(Window w, XWindowAttributes *wa) {
        c->h = c->oldh = wa->height;
        c->oldbw = wa->border_width;
        if(c->w == c->mon->mw && c->h == c->mon->mh) {
-               c->isfloating = 1;
+               c->isfloating = True;
                c->x = c->mon->mx;
                c->y = c->mon->my;
                c->bw = 0;
@@ -1273,8 +1262,8 @@ propertynotify(XEvent *e) {
                switch (ev->atom) {
                default: break;
                case XA_WM_TRANSIENT_FOR:
-                       XGetTransientForHint(dpy, c->win, &trans);
-                       if(!c->isfloating && (c->isfloating = (wintoclient(trans) != NULL)))
+                       if(!c->isfloating && (XGetTransientForHint(dpy, c->win, &trans)) &&
+                          (c->isfloating = (wintoclient(trans)) != NULL))
                                arrange(c->mon);
                        break;
                case XA_WM_NORMAL_HINTS:
@@ -1307,7 +1296,7 @@ clientmessage(XEvent *e) {
                        c->oldstate = c->isfloating;
                        c->oldbw = c->bw;
                        c->bw = 0;
-                       c->isfloating = 1;
+                       c->isfloating = True;
                        resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
                        XRaiseWindow(dpy, c->win);
                }
@@ -1583,7 +1572,6 @@ showhide(Client *c) {
        }
 }
 
-
 void
 sigchld(int unused) {
        if(signal(SIGCHLD, sigchld) == SIG_ERR)
@@ -2019,7 +2007,7 @@ xerrordummy(Display *dpy, XErrorEvent *ee) {
  * is already running. */
 int
 xerrorstart(Display *dpy, XErrorEvent *ee) {
-       otherwm = True;
+       die("dwm: another window manager is already running\n");
        return -1;
 }