JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
enabled release flags
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 5df912b..01e8d1f 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -389,6 +389,7 @@ arrange(Monitor *m) {
                showhide(m->stack);
        else for(m = mons; m; m = m->next)
                showhide(m->stack);
+       focus(NULL);
        if(m)
                arrangemon(m);
        else for(m = mons; m; m = m->next)
@@ -597,7 +598,6 @@ configurenotify(XEvent *e) {
                        updatebars();
                        for(m = mons; m; m = m->next)
                                XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
-                       focus(NULL);
                        arrange(NULL);
                }
        }
@@ -827,13 +827,14 @@ enternotify(XEvent *e) {
        if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
                return;
        c = wintoclient(ev->window);
-       if((m = wintomon(ev->window)) && m != selmon) {
+       m = c ? c->mon : wintomon(ev->window);
+       if(m != selmon) {
                unfocus(selmon->sel, True);
                selmon = m;
        }
-       else if(c == selmon->sel || c == NULL)
+       else if(!c || c == selmon->sel)
                return;
-       focus((wintoclient(ev->window)));
+       focus(c);
 }
 
 void
@@ -1112,8 +1113,8 @@ manage(Window w, XWindowAttributes *wa) {
                applyrules(c);
        }
        /* geometry */
-       c->x = c->oldx = wa->x + c->mon->wx;
-       c->y = c->oldy = wa->y + c->mon->wy;
+       c->x = c->oldx = wa->x;
+       c->y = c->oldy = wa->y;
        c->w = c->oldw = wa->width;
        c->h = c->oldh = wa->height;
        c->oldbw = wa->border_width;
@@ -1149,10 +1150,9 @@ manage(Window w, XWindowAttributes *wa) {
        attach(c);
        attachstack(c);
        XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */
+       XMapWindow(dpy, c->win);
        setclientstate(c, NormalState);
        arrange(c->mon);
-       XMapWindow(dpy, c->win);
-       focus(c);
 }
 
 void
@@ -1617,7 +1617,6 @@ void
 tag(const Arg *arg) {
        if(selmon->sel && arg->ui & TAGMASK) {
                selmon->sel->tags = arg->ui & TAGMASK;
-               focus(NULL);
                arrange(selmon);
        }
 }
@@ -1698,7 +1697,6 @@ toggletag(const Arg *arg) {
        newtags = selmon->sel->tags ^ (arg->ui & TAGMASK);
        if(newtags) {
                selmon->sel->tags = newtags;
-               focus(NULL);
                arrange(selmon);
        }
 }
@@ -1709,7 +1707,6 @@ toggleview(const Arg *arg) {
 
        if(newtagset) {
                selmon->tagset[selmon->seltags] = newtagset;
-               focus(NULL);
                arrange(selmon);
        }
 }
@@ -1975,7 +1972,6 @@ view(const Arg *arg) {
        selmon->seltags ^= 1; /* toggle sel tagset */
        if(arg->ui & TAGMASK)
                selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
-       focus(NULL);
        arrange(selmon);
 }