all repos — openbox @ 1a005d729155015be614ccb86b596020c99ae712

openbox fork - make it a bit more like ryudo

place transients without a parent in the middle of the screen
dont use non-normal windows as parents
Dana Jansens danakj@orodu.net
commit

1a005d729155015be614ccb86b596020c99ae712

parent

d0013c0861e29433de10a849032382534c8e1659

2 files changed, 23 insertions(+), 6 deletions(-)

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

@@ -3225,7 +3225,8 @@ }

ObClient *client_search_top_parent(ObClient *self) { - while (self->transient_for && self->transient_for != OB_TRAN_GROUP) + while (self->transient_for && self->transient_for != OB_TRAN_GROUP && + client_normal(self)) self = self->transient_for; return self; }
M openbox/place.copenbox/place.c

@@ -418,11 +418,14 @@ if (client->transient_for) {

if (client->transient_for != OB_TRAN_GROUP) { ObClient *c = client; ObClient *p = client->transient_for; - *x = (p->frame->area.width - c->frame->area.width) / 2 + - p->frame->area.x; - *y = (p->frame->area.height - c->frame->area.height) / 2 + - p->frame->area.y; - return TRUE; + + if (client_normal(p)) { + *x = (p->frame->area.width - c->frame->area.width) / 2 + + p->frame->area.x; + *y = (p->frame->area.height - c->frame->area.height) / 2 + + p->frame->area.y; + return TRUE; + } } else { GSList *it; gboolean first = TRUE;

@@ -451,6 +454,19 @@ return TRUE;

} } } + + if (client->transient) { + Rect **areas; + + areas = pick_head(client); + + *x = (areas[0]->width - client->frame->area.width) / 2 + areas[0]->x; + *y = (areas[0]->height - client->frame->area.height) / 2 + areas[0]->y; + + g_free(areas); + return TRUE; + } + return FALSE; }