X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fplace.c;h=d290be3db2289805579a87a6c39f3020a0a6b23b;hb=5ae93282f93ecafc491202a363f944d9604d3437;hp=6f7d490ddb79983f2622e9df3ee8392c8a5d257b;hpb=eb6a2e9c4b334f53d714a2e7f10f73c63c3d2edd;p=chaz%2Fopenbox diff --git a/openbox/place.c b/openbox/place.c index 6f7d490d..d290be3d 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -326,8 +326,12 @@ static gboolean place_nooverlap(ObClient *c, gint *x, gint *y) Rect *r = maxit->data; /* center it in the area */ - *x = r->x + (r->width - c->frame->area.width) / 2; - *y = r->y + (r->height - c->frame->area.height) / 2; + *x = r->x; + *y = r->y; + if (config_place_center) { + *x += (r->width - c->frame->area.width) / 2; + *y += (r->height - c->frame->area.height) / 2; + } ret = TRUE; } @@ -469,7 +473,11 @@ gboolean place_client(ObClient *client, gint *x, gint *y, { gboolean ret; - if (client->positioned) + /* per-app settings override program specified position + * but not user specified */ + if ((client->positioned & USPosition) || + ((client->positioned & PPosition) && !(settings && settings->pos_given)) + ) return FALSE; /* try a number of methods */ @@ -478,12 +486,10 @@ gboolean place_client(ObClient *client, gint *x, gint *y, (config_place_policy == OB_PLACE_POLICY_MOUSE && place_under_mouse(client, x, y)) || place_nooverlap(client, x, y) || - place_under_mouse(client, x, y) || place_random(client, x, y); g_assert(ret); /* get where the client should be */ - frame_frame_gravity(client->frame, x, y, - client->area.width, client->area.height); + frame_frame_gravity(client->frame, x, y); return ret; }