instead of forcing the ptr in the middle everytime, be more 'calm'; keep

the ptr still unless it moves out-of-bounds, then just follow the edge.

brought up by todd@

ok oga@
This commit is contained in:
okan 2008-06-12 18:32:06 +00:00
parent 6f1f3592d4
commit 198bb381a9
2 changed files with 13 additions and 8 deletions

9
grab.c
View File

@ -100,9 +100,14 @@ grab_sweep(struct client_ctx *cc)
XUnmapWindow(X_Dpy, sc->menuwin);
XReparentWindow(X_Dpy, sc->menuwin, sc->rootwin, 0, 0);
xu_ptr_ungrab();
cc->ptr.x = -1;
cc->ptr.y = -1;
/* Make sure the pointer stays within the window. */
if (cc->ptr.x > cc->geom.width)
cc->ptr.x = cc->geom.width - cc->bwidth;
if (cc->ptr.y > cc->geom.height)
cc->ptr.y = cc->geom.height - cc->bwidth;
client_ptrwarp(cc);
client_do_shape(cc);
return;
}

View File

@ -89,12 +89,12 @@ kbfunc_moveresize(struct client_ctx *cc, void *arg)
cc->geom.width += mx;
client_resize(cc);
/*
* Moving the cursor while resizing is problematic. Just place
* it in the middle of the window.
*/
cc->ptr.x = -1;
cc->ptr.y = -1;
/* Make sure the pointer stays within the window. */
xu_ptr_getpos(cc->pwin, &cc->ptr.x, &cc->ptr.y);
if (cc->ptr.x > cc->geom.width)
cc->ptr.x = cc->geom.width - cc->bwidth;
if (cc->ptr.y > cc->geom.height)
cc->ptr.y = cc->geom.height - cc->bwidth;
client_ptrwarp(cc);
break;
case CWM_PTRMOVE: