all repos — openbox @ 9df57ff1b5c6f2bc631253cc8a51ec3af7d24d7e

openbox fork - make it a bit more like ryudo

I meant to check for windows placed by programs, not windows not placed by the user. Now checks for windows placed by programs and not placed by user. This excludes placement schemes which the former check didn't, resulting in some brokenness, particularly with xinerama.
Mikael Magnusson mikachu@comhem.se
commit

9df57ff1b5c6f2bc631253cc8a51ec3af7d24d7e

parent

6236d2bcc2e4b206ba1bd846454dde67d639c024

1 files changed, 12 insertions(+), 9 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -349,11 +349,17 @@ client_find_onscreen(self, &x, &y,

self->frame->area.width, self->frame->area.height, /* non-normal clients has less rules, and - windows that are being restored from a session - do also. we can assume you want it back where - you saved it. Clients saying the user placed - them are also spared from the evil rules */ - !(self->positioned & USPosition) && + windows that are being restored from a + session do also. we can assume you want + it back where you saved it. Clients saying + they placed themselves are subjected to + harder rules, ones that are placed by + place.c or by the user are allowed partially + off-screen and on xinerama divides (ie, + it is up to the placement routines to avoid + the xinerama divides) */ + ((self->positioned & PPosition) && + !(self->positioned & USPosition)) && client_normal(self) && !self->session); if (x != ox || y != oy)

@@ -615,8 +621,8 @@

/* XXX watch for xinerama dead areas */ /* This makes sure windows aren't entirely outside of the screen so you * can't see them at all */ - a = screen_area(self->desktop); if (client_normal(self)) { + a = screen_area(self->desktop); if (!self->strut.right && *x >= a->x + a->width - 1) *x = a->x + a->width - self->frame->area.width; if (!self->strut.bottom && *y >= a->y + a->height - 1)

@@ -638,9 +644,6 @@ /* avoid the xinerama monitor divide while we're at it,

* remember to fix the placement stuff to avoid it also and * then remove this XXX */ a = screen_physical_area_monitor(client_monitor(self)); - /* this is ben's MOZILLA BITCHSLAP. "oh ya it fucking feels good. - Java can suck it too." */ - /* dont let windows map/move into the strut unless they are bigger than the available area */ if (w <= a->width) {