diff options
author | Bert Münnich <ber.t@gmx.com> | 2013-03-04 19:18:58 +0100 |
---|---|---|
committer | Bert Münnich <ber.t@gmx.com> | 2013-03-04 19:18:58 +0100 |
commit | ce8460108aafc98aa932832e7353271f4dab8c0c (patch) | |
tree | e06656b17d5e41a33ea97479ff4f58e8291b1db8 | |
parent | 408b75a0b4fd16b833c01f6030d799c0148eacf4 (diff) | |
parent | c8fcc3d3543f650dd846a89edfcd33d1674485f6 (diff) |
Merge pointer warping in i_drag from Rob Pilling
-rw-r--r-- | commands.c | 25 |
1 files changed, 22 insertions, 3 deletions
@@ -289,10 +289,29 @@ bool i_drag(arg_t a) case MotionNotify: x = e.xmotion.x; y = e.xmotion.y; - if (x >= 0 && x <= win.w && y >= 0 && y <= win.h) { - dx += x - ox; - dy += y - oy; + +#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; + dy += y - oy; + ox = x; oy = y; break; |