From 1a005d729155015be614ccb86b596020c99ae712 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 23 Apr 2007 23:46:13 +0000 Subject: place transients without a parent in the middle of the screen dont use non-normal windows as parents --- openbox/place.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'openbox/place.c') diff --git a/openbox/place.c b/openbox/place.c index 4717cbfc..5614ecf3 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -418,11 +418,14 @@ static gboolean place_transient(ObClient *client, gint *x, gint *y) 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 @@ static gboolean place_transient(ObClient *client, gint *x, gint *y) } } } + + 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; } -- cgit v1.2.3