From: Dana Jansens Date: Thu, 24 May 2007 19:38:03 +0000 (+0000) Subject: only put a transient for the group onto some other desktop if its whole group is... X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=689157e8691330704f1071bc1e23238b56a0b565;p=chaz%2Fopenbox only put a transient for the group onto some other desktop if its whole group is over there --- diff --git a/openbox/client.c b/openbox/client.c index d8eb207f..bcd51005 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -1139,15 +1139,27 @@ static void client_get_desktop(ObClient *self) self->desktop = self->transient_for->desktop; trdesk = TRUE; } else { + /* if all the group is on one desktop, then open it on the + same desktop */ GSList *it; + gboolean first = TRUE; + guint all = screen_num_desktops; /* not a valid value */ - for (it = self->group->members; it; it = g_slist_next(it)) - if (it->data != self && - !((ObClient*)it->data)->transient_for) { - self->desktop = ((ObClient*)it->data)->desktop; - trdesk = TRUE; - break; + for (it = self->group->members; it; it = g_slist_next(it)) { + ObClient *c = it->data; + if (c != self) { + if (first) { + all = c->desktop; + first = FALSE; + } + else if (all != c->desktop) + all = screen_num_desktops; /* make it invalid */ } + } + if (all != screen_num_desktops) { + self->desktop = all; + trdesk = TRUE; + } } } if (!trdesk) {