mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
Limit vtile/htile actions to clients fully within the screen of master client.
from Charles A Daniels.
This commit is contained in:
parent
c307e37dcb
commit
044ef5a8cd
41
client.c
41
client.c
@ -986,19 +986,23 @@ client_htile(struct client_ctx *cc)
|
|||||||
return;
|
return;
|
||||||
i = n = 0;
|
i = n = 0;
|
||||||
|
|
||||||
|
area = screen_area(sc,
|
||||||
|
cc->geom.x + cc->geom.w / 2,
|
||||||
|
cc->geom.y + cc->geom.h / 2, CWM_GAP);
|
||||||
|
|
||||||
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
||||||
if (ci->flags & CLIENT_HIDDEN ||
|
if (ci->flags & CLIENT_HIDDEN ||
|
||||||
ci->flags & CLIENT_IGNORE || (ci == cc))
|
ci->flags & CLIENT_IGNORE || (ci == cc) ||
|
||||||
|
ci->geom.x < area.x ||
|
||||||
|
ci->geom.x > (area.x + area.w) ||
|
||||||
|
ci->geom.y < area.y ||
|
||||||
|
ci->geom.y > (area.y + area.h))
|
||||||
continue;
|
continue;
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
area = screen_area(sc,
|
|
||||||
cc->geom.x + cc->geom.w / 2,
|
|
||||||
cc->geom.y + cc->geom.h / 2, CWM_GAP);
|
|
||||||
|
|
||||||
if (cc->flags & CLIENT_VMAXIMIZED ||
|
if (cc->flags & CLIENT_VMAXIMIZED ||
|
||||||
cc->geom.h + (cc->bwidth * 2) >= area.h)
|
cc->geom.h + (cc->bwidth * 2) >= area.h)
|
||||||
return;
|
return;
|
||||||
@ -1017,7 +1021,11 @@ client_htile(struct client_ctx *cc)
|
|||||||
h = area.h - mh;
|
h = area.h - mh;
|
||||||
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
||||||
if (ci->flags & CLIENT_HIDDEN ||
|
if (ci->flags & CLIENT_HIDDEN ||
|
||||||
ci->flags & CLIENT_IGNORE || (ci == cc))
|
ci->flags & CLIENT_IGNORE || (ci == cc) ||
|
||||||
|
ci->geom.x < area.x ||
|
||||||
|
ci->geom.x > (area.x + area.w) ||
|
||||||
|
ci->geom.y < area.y ||
|
||||||
|
ci->geom.y > (area.y + area.h))
|
||||||
continue;
|
continue;
|
||||||
ci->bwidth = Conf.bwidth;
|
ci->bwidth = Conf.bwidth;
|
||||||
ci->geom.x = x;
|
ci->geom.x = x;
|
||||||
@ -1044,21 +1052,26 @@ client_vtile(struct client_ctx *cc)
|
|||||||
|
|
||||||
if (!gc)
|
if (!gc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
area = screen_area(sc,
|
||||||
|
cc->geom.x + cc->geom.w / 2,
|
||||||
|
cc->geom.y + cc->geom.h / 2, CWM_GAP);
|
||||||
|
|
||||||
i = n = 0;
|
i = n = 0;
|
||||||
|
|
||||||
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
||||||
if (ci->flags & CLIENT_HIDDEN ||
|
if (ci->flags & CLIENT_HIDDEN ||
|
||||||
ci->flags & CLIENT_IGNORE || (ci == cc))
|
ci->flags & CLIENT_IGNORE || (ci == cc) ||
|
||||||
|
ci->geom.x < area.x ||
|
||||||
|
ci->geom.x > (area.x + area.w) ||
|
||||||
|
ci->geom.y < area.y ||
|
||||||
|
ci->geom.y > (area.y + area.h))
|
||||||
continue;
|
continue;
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
area = screen_area(sc,
|
|
||||||
cc->geom.x + cc->geom.w / 2,
|
|
||||||
cc->geom.y + cc->geom.h / 2, CWM_GAP);
|
|
||||||
|
|
||||||
if (cc->flags & CLIENT_HMAXIMIZED ||
|
if (cc->flags & CLIENT_HMAXIMIZED ||
|
||||||
cc->geom.w + (cc->bwidth * 2) >= area.w)
|
cc->geom.w + (cc->bwidth * 2) >= area.w)
|
||||||
return;
|
return;
|
||||||
@ -1077,7 +1090,11 @@ client_vtile(struct client_ctx *cc)
|
|||||||
w = area.w - mw;
|
w = area.w - mw;
|
||||||
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
TAILQ_FOREACH(ci, &gc->clientq, group_entry) {
|
||||||
if (ci->flags & CLIENT_HIDDEN ||
|
if (ci->flags & CLIENT_HIDDEN ||
|
||||||
ci->flags & CLIENT_IGNORE || (ci == cc))
|
ci->flags & CLIENT_IGNORE || (ci == cc) ||
|
||||||
|
ci->geom.x < area.x ||
|
||||||
|
ci->geom.x > (area.x + area.w) ||
|
||||||
|
ci->geom.y < area.y ||
|
||||||
|
ci->geom.y > (area.y + area.h))
|
||||||
continue;
|
continue;
|
||||||
ci->bwidth = Conf.bwidth;
|
ci->bwidth = Conf.bwidth;
|
||||||
ci->geom.x = area.x + mw;
|
ci->geom.x = area.x + mw;
|
||||||
|
Loading…
Reference in New Issue
Block a user