diff -r 0ac7a3fc2831 dwm.c --- a/dwm.c Mon May 19 23:30:04 2008 +0200 +++ b/dwm.c Mon May 19 23:43:49 2008 +0200 @@ -316,40 +316,52 @@ XButtonPressedEvent *ev = &e->xbutton; if(ev->window == barwin) { - x = 0; - for(i = 0; i < LENGTH(tags); i++) { - x += textw(tags[i]); - if(ev->x < x) { - if(ev->button == Button1) { - if(ev->state & MODKEY) - tag(tags[i]); - else - view(tags[i]); + if(ev->button == Button4) + focusprev(NULL); + else if(ev->button == Button5) + focusnext(NULL); + else if(ev->button != Button2){ + x = 0; + for(i = 0; i < LENGTH(tags); i++) { + x += textw(tags[i]); + if(ev->x < x) { + if(ev->button == Button1) { + if(ev->state & MODKEY) + tag(tags[i]); + else + view(tags[i]); + } + else if(ev->button == Button3) { + if(ev->state & MODKEY) + toggletag(tags[i]); + else + toggleview(tags[i]); + } + return; } - else if(ev->button == Button3) { - if(ev->state & MODKEY) - toggletag(tags[i]); - else - toggleview(tags[i]); - } + } + if(ev->x < x + blw) { + if(ev->button == Button1) + togglelayout(NULL); + else if(ev->button == Button3) + togglemax(NULL); return; } } - if(ev->x < x + blw) { - if(ev->button == Button1) - togglelayout(NULL); - else if(ev->button == Button3) - togglemax(NULL); - } + c = sel; } - else if((c = getclient(ev->window)) && !domax) { + else if(!(c = getclient(ev->window)) || CLEANMASK(ev->state) != MODKEY) + return; + if(!domax) { focus(c); - if(CLEANMASK(ev->state) != MODKEY) - return; if(ev->button == Button1) movemouse(c); - else if(ev->button == Button2) - togglefloating(NULL); + else if(ev->button == Button2) { + if(lt->arrange && !c->isfloating) + zoom(NULL); + else + togglefloating(NULL); + } else if(ev->button == Button3 && !c->isfixed) resizemouse(c); } @@ -1039,6 +1051,7 @@ if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, None, cursor[CurMove], CurrentTime) != GrabSuccess) return; + XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, -1, -1); XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); for(;;) { XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);