X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fplace.c;h=19fa597a6f4a8f44c243f4f79f5dae280768a98c;hb=f81f352f4ea128c2aec195c6414a936bcfac786b;hp=967b32d380b949dc6461c5da9850e87608eed960;hpb=6675b28dede3e0581a1b1bfb73fb0dd3b5dd1863;p=chaz%2Fopenbox diff --git a/openbox/place.c b/openbox/place.c index 967b32d3..19fa597a 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -193,10 +193,10 @@ typedef enum SMART_FOCUSED } ObSmartType; -#define SMART_IGNORE(placer, c) \ - (placer == c || c->shaded || !client_normal(c) || \ - (c->desktop != DESKTOP_ALL && \ - c->desktop != (placer->desktop == DESKTOP_ALL ? \ +#define SMART_IGNORE(placer, c) \ + (placer == c || !c->frame->visible || c->shaded || !client_normal(c) || \ + (c->desktop != DESKTOP_ALL && \ + c->desktop != (placer->desktop == DESKTOP_ALL ? \ screen_desktop : placer->desktop))) static gboolean place_smart(ObClient *client, gint *x, gint *y, @@ -372,13 +372,13 @@ void place_client(ObClient *client, gint *x, gint *y) { if (client->positioned) return; - if (place_transient(client, x, y) || - place_dialog(client, x, y) || - place_smart(client, x, y, SMART_FULL) || - place_smart(client, x, y, SMART_GROUP) || - place_smart(client, x, y, SMART_FOCUSED) || - (config_focus_follow ? + if (place_transient(client, x, y) || + place_dialog(client, x, y) || + ((config_place_policy == OB_PLACE_POLICY_MOUSE) ? place_under_mouse(client, x, y) : + place_smart(client, x, y, SMART_FULL) || + place_smart(client, x, y, SMART_GROUP) || + place_smart(client, x, y, SMART_FOCUSED) || place_random(client, x, y))) { /* get where the client should be */