From: Dana Jansens Date: Mon, 13 Oct 2003 01:10:03 +0000 (+0000) Subject: when getting the state, grab the above/below from the max amongst other members of... X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=b9b3123305a943223978f6bb91e1284b4eb95adc;p=chaz%2Fopenbox when getting the state, grab the above/below from the max amongst other members of the client's group --- diff --git a/openbox/client.c b/openbox/client.c index fab5328d..cc5d80ca 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -849,6 +849,34 @@ static void client_get_state(ObClient *self) g_free(state); } + + if (!(self->above || self->below)) { + if (client_has_group_siblings(self)) { + /* apply stuff from the group */ + GSList *it; + gint layer = -1; + + for (it = self->group->members; it; it = g_slist_next(it)) { + ObClient *c = it->data; + if (c != self && !client_search_transient(self, c)) + layer = MAX(layer, + (c->above ? 1 : (c->below ? -1 : 0))); + } + switch (layer) { + case -1: + self->below = TRUE; + break; + case 0: + break; + case 1: + self->above = TRUE; + break; + default: + g_assert_not_reached(); + break; + } + } + } } static void client_get_shaped(ObClient *self)