Wrap the pointer when the edge of the window is reached

This commit is contained in:
Rob Pilling 2013-03-03 18:16:32 +00:00
parent 408b75a0b4
commit c8fcc3d354
1 changed files with 22 additions and 3 deletions

View File

@ -289,10 +289,29 @@ bool i_drag(arg_t a)
case MotionNotify: case MotionNotify:
x = e.xmotion.x; x = e.xmotion.x;
y = e.xmotion.y; y = e.xmotion.y;
if (x >= 0 && x <= win.w && y >= 0 && y <= win.h) {
#define WARP(x, y) \
XWarpPointer(win.env.dpy, \
None, win.xwin, \
0, 0, 0, 0, \
x, y); \
ox = x, oy = y; \
break
/* wrap the mouse around */
if(x < 0){
WARP(win.w, y);
}else if(x > win.w){
WARP(0, y);
}else if(y < 0){
WARP(x, win.h);
}else if(y > win.h){
WARP(x, 0);
}
dx += x - ox; dx += x - ox;
dy += y - oy; dy += y - oy;
}
ox = x; ox = x;
oy = y; oy = y;
break; break;