959 XEvent ev; |
959 XEvent ev; |
960 |
960 |
961 if(!(c = sel)) |
961 if(!(c = sel)) |
962 return; |
962 return; |
963 restack(); |
963 restack(); |
964 ocx = nx = c->x; |
964 ocx = c->x; |
965 ocy = ny = c->y; |
965 ocy = c->y; |
966 if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
966 if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
967 None, cursor[CurMove], CurrentTime) != GrabSuccess) |
967 None, cursor[CurMove], CurrentTime) != GrabSuccess) |
968 return; |
968 return; |
969 XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui); |
969 XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui); |
970 for(;;) { |
970 do { |
971 XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
971 XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
972 switch (ev.type) { |
972 switch (ev.type) { |
973 case ButtonRelease: |
|
974 XUngrabPointer(dpy, CurrentTime); |
|
975 return; |
|
976 case ConfigureRequest: |
973 case ConfigureRequest: |
977 case Expose: |
974 case Expose: |
978 case MapRequest: |
975 case MapRequest: |
979 handler[ev.type](&ev); |
976 handler[ev.type](&ev); |
980 break; |
977 break; |
998 if(!lt[sellt]->arrange || c->isfloating) |
995 if(!lt[sellt]->arrange || c->isfloating) |
999 resize(c, nx, ny, c->w, c->h, False); |
996 resize(c, nx, ny, c->w, c->h, False); |
1000 break; |
997 break; |
1001 } |
998 } |
1002 } |
999 } |
|
1000 while(ev.type != ButtonRelease); |
|
1001 XUngrabPointer(dpy, CurrentTime); |
1003 } |
1002 } |
1004 |
1003 |
1005 Client * |
1004 Client * |
1006 nexttiled(Client *c) { |
1005 nexttiled(Client *c) { |
1007 for(; c && (c->isfloating || !ISVISIBLE(c)); c = c->next); |
1006 for(; c && (c->isfloating || !ISVISIBLE(c)); c = c->next); |