when flags are not set assume bette defaults

This commit is contained in:
Dana Jansens 2003-04-16 16:56:26 +00:00
parent 79a352a40b
commit 1683b33fc1

View file

@ -1033,55 +1033,58 @@ 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))
/* did the group state change? */ hints->window_group = None;
if (hints->window_group !=
(self->group ? self->group->leader : None)) {
/* remove from the old group if there was one */
if (self->group != NULL) {
/* remove transients of the group */
for (it = self->group->members; it; it = it->next)
if (it->data != self &&
((Client*)it->data)->transient_for == TRAN_GROUP) {
self->transients = g_slist_remove(self->transients,
it->data);
}
group_remove(self->group, self);
self->group = NULL;
}
if (hints->window_group != None) {
self->group = group_add(hints->window_group, self);
/* add other transients of the group that are already /* did the group state change? */
set up */ if (hints->window_group !=
for (it = self->group->members; it; it = it->next) (self->group ? self->group->leader : None)) {
if (it->data != self && /* remove from the old group if there was one */
((Client*)it->data)->transient_for == TRAN_GROUP) if (self->group != NULL) {
self->transients = g_slist_append(self->transients, /* remove transients of the group */
it->data); for (it = self->group->members; it; it = it->next)
} if (it->data != self &&
((Client*)it->data)->transient_for == TRAN_GROUP) {
/* because the self->transient flag wont change from this call, self->transients = g_slist_remove(self->transients,
we don't need to update the window's type and such, only its it->data);
transient_for, and the transients lists of other windows in }
the group may be affected */ group_remove(self->group, self);
client_update_transient_for(self); self->group = NULL;
} }
if (hints->window_group != None) {
self->group = group_add(hints->window_group, self);
/* add other transients of the group that are already
set up */
for (it = self->group->members; it; it = it->next)
if (it->data != self &&
((Client*)it->data)->transient_for == TRAN_GROUP)
self->transients = g_slist_append(self->transients,
it->data);
}
/* because the self->transient flag wont change from this call,
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 group may be affected */
client_update_transient_for(self);
} }
if (hints->flags & IconPixmapHint) { client_update_kwm_icon(self);
client_update_kwm_icon(self); /* try get the kwm icon first, this is a fallback only */
/* try get the kwm icon first, this is a fallback only */ if (self->pixmap_icon == None) {
if (self->pixmap_icon == None) { if (hints->flags & IconPixmapHint) {
self->pixmap_icon = hints->icon_pixmap; if (self->pixmap_icon == None) {
if (hints->flags & IconMaskHint) self->pixmap_icon = hints->icon_pixmap;
self->pixmap_icon_mask = hints->icon_mask; if (hints->flags & IconMaskHint)
else self->pixmap_icon_mask = hints->icon_mask;
self->pixmap_icon_mask = None; else
self->pixmap_icon_mask = None;
if (self->frame) if (self->pixmap_icons != None && self->frame)
frame_adjust_icon(self->frame); frame_adjust_icon(self->frame);
} }
}
} }
XFree(hints); XFree(hints);