Ensure clients stay within the viewable bounds on placement, even with empty

borders; based on a patch from Vadim Vygonets.
This commit is contained in:
okan 2017-05-05 14:14:19 +00:00
parent 3d6ff6dabf
commit 189a735eaa

View File

@ -761,14 +761,14 @@ client_placecalc(struct client_ctx *cc)
wmax = DisplayWidth(X_Dpy, sc->which);
hmax = DisplayHeight(X_Dpy, sc->which);
if (cc->geom.x + (cc->bwidth * 2) >= wmax)
cc->geom.x = wmax - (cc->bwidth * 2);
if (cc->geom.x + cc->geom.w - (cc->bwidth * 2) < 0)
cc->geom.x = -cc->geom.w;
if (cc->geom.y + (cc->bwidth * 2) >= hmax)
cc->geom.y = hmax - (cc->bwidth * 2);
if (cc->geom.y + cc->geom.h - (cc->bwidth * 2) < 0)
cc->geom.y = -cc->geom.h;
if (cc->geom.x >= wmax)
cc->geom.x = wmax - cc->bwidth - 1;
if (cc->geom.x + cc->geom.w + cc->bwidth <= 0)
cc->geom.x = -(cc->geom.w + cc->bwidth - 1);
if (cc->geom.y >= hmax)
cc->geom.x = hmax - cc->bwidth - 1;
if (cc->geom.y + cc->geom.h + cc->bwidth <= 0)
cc->geom.y = -(cc->geom.h + cc->bwidth - 1);
} else {
struct geom area;
int xmouse, ymouse;