warp: do not warp if force_warp = 1 and mouse cursor is on a bar

This commit is contained in:
bakkeby 2020-10-06 12:45:09 +02:00
parent 56c81ddbfa
commit b25b92b5f4

View File

@ -13,24 +13,25 @@ warp(const Client *c)
return; return;
} }
if (!force_warp) { if (!getrootptr(&x, &y))
if (!getrootptr(&x, &y) || return;
(x > c->x - c->bw &&
y > c->y - c->bw &&
x < c->x + c->w + c->bw*2 &&
y < c->y + c->h + c->bw*2)
)
return;
for (m = mons; m; m = m->next) if (!force_warp &&
for (bar = m->bar; bar; bar = bar->next) (x > c->x - c->bw &&
if (x > bar->bx && y > c->y - c->bw &&
x < bar->bx + bar->bw && x < c->x + c->w + c->bw*2 &&
y > bar->by && y < c->y + c->h + c->bw*2))
y < bar->by + bar->bh) return;
return;
} else force_warp = 0;
force_warp = 0;
for (m = mons; m; m = m->next)
for (bar = m->bar; bar; bar = bar->next)
if (x > bar->bx &&
x < bar->bx + bar->bw &&
y > bar->by &&
y < bar->by + bar->bh)
return;
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2); XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2);
} }