|
|
@ -961,18 +961,15 @@ movemouse(const Arg *arg) { |
|
|
|
if(!(c = sel)) |
|
|
|
if(!(c = sel)) |
|
|
|
return; |
|
|
|
return; |
|
|
|
restack(); |
|
|
|
restack(); |
|
|
|
ocx = nx = c->x; |
|
|
|
ocx = c->x; |
|
|
|
ocy = ny = c->y; |
|
|
|
ocy = c->y; |
|
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
|
None, cursor[CurMove], CurrentTime) != GrabSuccess) |
|
|
|
None, cursor[CurMove], CurrentTime) != GrabSuccess) |
|
|
|
return; |
|
|
|
return; |
|
|
|
XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui); |
|
|
|
XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui); |
|
|
|
for(;;) { |
|
|
|
do { |
|
|
|
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
|
|
|
XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); |
|
|
|
switch (ev.type) { |
|
|
|
switch (ev.type) { |
|
|
|
case ButtonRelease: |
|
|
|
|
|
|
|
XUngrabPointer(dpy, CurrentTime); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
case ConfigureRequest: |
|
|
|
case ConfigureRequest: |
|
|
|
case Expose: |
|
|
|
case Expose: |
|
|
|
case MapRequest: |
|
|
|
case MapRequest: |
|
|
@ -1000,6 +997,8 @@ movemouse(const Arg *arg) { |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
while(ev.type != ButtonRelease); |
|
|
|
|
|
|
|
XUngrabPointer(dpy, CurrentTime); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Client * |
|
|
|
Client * |
|
|
|