aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/commands.c b/commands.c
index 7274475..7ec7b88 100644
--- a/commands.c
+++ b/commands.c
@@ -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;