only change the group info if the group flag is set

This commit is contained in:
Dana Jansens 2003-04-16 01:02:29 +00:00
parent 8c2f20e672
commit c915078fab

View file

@ -1033,38 +1033,40 @@ void client_update_wmhints(Client *self)
if (hints->flags & XUrgencyHint) if (hints->flags & XUrgencyHint)
ur = TRUE; ur = TRUE;
if (!(hints->flags & WindowGroupHint)) if (hints->flags & WindowGroupHint) {
hints->window_group = None; /* no group */ /* did the group state change? */
/* did the group state change? */ if (hints->window_group !=
if (hints->window_group != (self->group ? self->group->leader : None)){ (self->group ? self->group->leader : None)) {
/* remove from the old group if there was one */ /* remove from the old group if there was one */
if (self->group != NULL) { if (self->group != NULL) {
/* remove transients of the group */ /* remove transients of the group */
for (it = self->group->members; it; it = it->next) for (it = self->group->members; it; it = it->next)
if (it->data != self && if (it->data != self &&
((Client*)it->data)->transient_for == TRAN_GROUP) { ((Client*)it->data)->transient_for == TRAN_GROUP) {
self->transients = g_slist_remove(self->transients, self->transients = g_slist_remove(self->transients,
it->data); it->data);
} }
group_remove(self->group, self); group_remove(self->group, self);
self->group = NULL; self->group = NULL;
} }
if (hints->window_group != None) { if (hints->window_group != None) {
self->group = group_add(hints->window_group, self); self->group = group_add(hints->window_group, self);
/* add other transients of the group that are already set up */ /* add other transients of the group that are already
for (it = self->group->members; it; it = it->next) set up */
if (it->data != self && for (it = self->group->members; it; it = it->next)
((Client*)it->data)->transient_for == TRAN_GROUP) if (it->data != self &&
self->transients = g_slist_append(self->transients, ((Client*)it->data)->transient_for == TRAN_GROUP)
it->data); self->transients = g_slist_append(self->transients,
} it->data);
}
/* because the self->transient flag wont change from this call, /* because the self->transient flag wont change from this call,
we don't need to update the window's type and such, only its we don't need to update the window's type and such, only its
transient_for, and the transients lists of other windows in the transient_for, and the transients lists of other windows in
group may be affected */ the group may be affected */
client_update_transient_for(self); client_update_transient_for(self);
}
} }
if (hints->flags & IconPixmapHint) { if (hints->flags & IconPixmapHint) {