X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fplace.c;h=eada385f6a0f52e45c19eaa07088b721ae22109b;hb=3e90c85df00fd9fc21b8f51a3c5e961ced731fee;hp=5614ecf3e002d55f06109c30e13a3330503e9bef;hpb=1a005d729155015be614ccb86b596020c99ae712;p=chaz%2Fopenbox diff --git a/openbox/place.c b/openbox/place.c index 5614ecf3..eada385f 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -126,9 +126,9 @@ static gboolean place_random(ObClient *client, gint *x, gint *y) b = areas[i]->y + areas[i]->height - client->frame->area.height; if (r > l) *x = g_random_int_range(l, r + 1); - else *x = 0; + else *x = areas[i]->x; if (b > t) *y = g_random_int_range(t, b + 1); - else *y = 0; + else *y = areas[i]->y; g_free(areas); @@ -251,7 +251,8 @@ typedef enum } ObSmartType; #define SMART_IGNORE(placer, c) \ - (placer == c || !c->frame->visible || c->shaded || !client_normal(c) || \ + (placer == c || c->shaded || !client_normal(c) || \ + !frame_visible(c->frame) || \ (c->desktop != DESKTOP_ALL && \ c->desktop != (placer->desktop == DESKTOP_ALL ? \ screen_desktop : placer->desktop))) @@ -282,7 +283,7 @@ static gboolean place_smart(ObClient *client, gint *x, gint *y, if (WINDOW_IS_CLIENT(it->data)) { c = it->data; - if (c->fullscreen) + if (c->fullscreen || (c->max_vert && c->max_horz)) continue; } else continue; @@ -306,7 +307,7 @@ static gboolean place_smart(ObClient *client, gint *x, gint *y, if (WINDOW_IS_CLIENT(it->data)) { c = it->data; - if (c->fullscreen) + if (c->fullscreen || (c->max_vert && c->max_horz)) continue; } else continue; @@ -489,6 +490,7 @@ gboolean place_client(ObClient *client, gint *x, gint *y, place_random(client, x, y)))) g_assert_not_reached(); /* the last one better succeed */ /* get where the client should be */ - frame_frame_gravity(client->frame, x, y); + frame_frame_gravity(client->frame, x, y, + client->area.width, client->area.height); return ret; }