X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.c;h=47bfcabcb5ff6a547f2e7287fe124d47ca68ec5c;hb=e180bb036da9d9557e819cdbc67b7a8720731834;hp=9c06e49e34d38e0bc50ee83b011eea47f25adab1;hpb=f138bd80071eb3177537210e8ce3e28ebb24a9ea;p=chaz%2Fopenbox diff --git a/openbox/client.c b/openbox/client.c index 9c06e49e..47bfcabc 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -1254,11 +1254,13 @@ static void client_update_transient_tree(ObClient *self, } - /* If the group changed then we need to remove any old group transient - windows from our children. But if we're transient for the group, then + /* If the group changed, or if we are just becoming transient for the + group, then we need to remove any old group transient windows + from our children. But if we were already transient for the group, then other group transients are not our children. */ - if (oldgroup != newgroup && oldgroup != NULL && - oldparent != OB_TRAN_GROUP) + if ((oldgroup != newgroup || + (newparent == OB_TRAN_GROUP && oldparent != newparent)) && + oldgroup != NULL && oldparent != OB_TRAN_GROUP) { for (it = self->transients; it; it = next) { next = g_slist_next(it); @@ -2143,9 +2145,11 @@ static void client_change_wm_state(ObClient *self) old = self->wmstate; - if (self->shaded || self->iconic) + if (self->shaded || self->iconic || + (self->desktop != DESKTOP_ALL && self->desktop != screen_desktop)) + { self->wmstate = IconicState; - else + } else self->wmstate = NormalState; if (old != self->wmstate) {