Warp pointer on first/last pixel
Previously, the pointer would get warped when it had left the window. This doesn't work when sxiv is run in fullscreen mode (or similar -- see dwm's monocle mode): The pointer can never leave the window in such situations. To fix this, warp the pointer when it's on the first/last pixel. To avoid an endless warping loop, the new position must be at least one pixel away from the next warp position.
This commit is contained in:
parent
26a624a543
commit
b98a48576e
16
commands.c
16
commands.c
|
@ -352,14 +352,14 @@ bool i_drag(arg_t a)
|
||||||
y = e.xmotion.y;
|
y = e.xmotion.y;
|
||||||
|
|
||||||
/* wrap the mouse around */
|
/* wrap the mouse around */
|
||||||
if (x < 0) {
|
if (x <= 0) {
|
||||||
WARP(win.w, y);
|
WARP(win.w - 2, y);
|
||||||
} else if (x > win.w) {
|
} else if (x >= win.w - 1) {
|
||||||
WARP(0, y);
|
WARP(1, y);
|
||||||
} else if (y < 0) {
|
} else if (y <= 0) {
|
||||||
WARP(x, win.h);
|
WARP(x, win.h - 2);
|
||||||
} else if (y > win.h) {
|
} else if (y >= win.h - 1) {
|
||||||
WARP(x, 0);
|
WARP(x, 1);
|
||||||
}
|
}
|
||||||
dx += x - ox;
|
dx += x - ox;
|
||||||
dy += y - oy;
|
dy += y - oy;
|
||||||
|
|
Loading…
Reference in a new issue