JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
implemented focus on enterwindow on titlebars
[dwm.git] / client.c
index 45acf2e..6f6ed99 100644 (file)
--- a/client.c
+++ b/client.c
@@ -191,7 +191,7 @@ killclient(Arg *arg)
 {
        if(!sel)
                return;
-       if(sel->proto & WM_PROTOCOL_DELWIN)
+       if(sel->proto & PROTODELWIN)
                sendevent(sel->win, wmatom[WMProtocols], wmatom[WMDelete]);
        else
                XKillClient(dpy, sel->win);
@@ -230,7 +230,7 @@ manage(Window w, XWindowAttributes *wa)
        XGetTransientForHint(dpy, c->win, &trans);
        twa.override_redirect = 1;
        twa.background_pixmap = ParentRelative;
-       twa.event_mask = ExposureMask;
+       twa.event_mask = ExposureMask | EnterWindowMask;
 
        c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
                        0, DefaultDepth(dpy, screen), CopyFromParent,
@@ -244,11 +244,11 @@ manage(Window w, XWindowAttributes *wa)
        c->next = clients;
        clients = c;
 
-       XGrabButton(dpy, Button1, MODKEY, c->win, False, ButtonPressMask,
+       XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK,
                        GrabModeAsync, GrabModeSync, None, None);
-       XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonPressMask,
+       XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK,
                        GrabModeAsync, GrabModeSync, None, None);
-       XGrabButton(dpy, Button3, MODKEY, c->win, False, ButtonPressMask,
+       XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK,
                        GrabModeAsync, GrabModeSync, None, None);
 
        if(!c->isfloat)
@@ -416,20 +416,18 @@ togglemax(Arg *arg)
 void
 unmanage(Client *c)
 {
-       Client **l;
-
        XGrabServer(dpy);
        XSetErrorHandler(xerrordummy);
 
        XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
        XDestroyWindow(dpy, c->title);
 
-       for(l = &clients; *l && *l != c; l = &(*l)->next);
        if(c->prev)
                c->prev->next = c->next;
        if(c->next)
                c->next->prev = c->prev;
-       *l = c->next;
+       if(c == clients)
+               clients = c->next;
        if(sel == c) {
                sel = getnext(c->next);
                if(!sel)
@@ -450,7 +448,7 @@ unmanage(Client *c)
 void
 zoom(Arg *arg)
 {
-       Client *c, **l;
+       Client *c;
 
        if(!sel)
                return;
@@ -461,13 +459,10 @@ zoom(Arg *arg)
        }
 
        /* pop */
-       for(l = &clients; *l && *l != sel; l = &(*l)->next);
        if(sel->prev)
                sel->prev->next = sel->next;
        if(sel->next)
                sel->next->prev = sel->prev;
-       *l = sel->next;
-
        sel->prev = NULL;
        if(clients)
                clients->prev = sel;