all repos — openbox @ 431035df66a6d541ba715619b3080b4e267bc78a

openbox fork - make it a bit more like ryudo

continuation of r6039 in all respects
Dana Jansens danakj@orodu.net
commit

431035df66a6d541ba715619b3080b4e267bc78a

parent

dbafb9ac9b327801caf92307d44d1fc9475a5637

1 files changed, 18 insertions(+), 5 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -930,7 +930,9 @@ client_get_type(self);/* this can change the mwmhints for special cases */

client_get_state(self); client_update_wmhints(self); - client_update_transient_for(self); + /* this may have already been called from client_update_wmhints */ + if (self->transient && self->transient_for == NULL) + client_update_transient_for(self); client_get_startup_id(self); client_get_desktop(self);/* uses transient data/group/startup id if a desktop is not specified */

@@ -1208,6 +1210,17 @@ if (oldgroup == newgroup && oldparent == newparent) return;

/** Remove the client from the transient tree wherever it has changed **/ + /* If the window is becoming a direct transient for a window in its group + then that window can't be a child of this window anymore */ + if (oldparent != newparent && + newparent != NULL && newparent != OB_TRAN_GROUP && + newparent->transient_for == OB_TRAN_GROUP && + newgroup != NULL && newgroup == oldgroup) + { + self->transients = g_slist_remove(self->transients, newparent); + } + + /* 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 other group transients are not our children. */

@@ -1253,7 +1266,7 @@ for (it = oldgroup->members; it; it = g_slist_next(it)) {

c = it->data; if (c != self && (!c->transient_for || c->transient_for != OB_TRAN_GROUP)) - c->transients = g_slist_prepend(c->transients, self); + c->transients = g_slist_append(c->transients, self); } } /* If we are now transient for a single window which we weren't before,

@@ -1263,10 +1276,10 @@ WARNING: Cyclical transient ness is possible if two windows are

transient for eachother. */ else if (newparent != NULL && newparent != OB_TRAN_GROUP && - newparent != newparent && + newparent != oldparent && /* don't make ourself its child if it is already our child */ !client_is_direct_child(self, newparent)) - newparent->transients = g_slist_prepend(newparent->transients, self); + newparent->transients = g_slist_append(newparent->transients, self); /* If the group changed then we need to add any old group transient windows to our children. But if we're transient for the group, then

@@ -1285,7 +1298,7 @@ if (c != self && c->transient_for == OB_TRAN_GROUP &&

/* Don't make it our child if it is already our parent */ !client_is_direct_child(c, self)) { - self->transients = g_slist_prepend(self->transients, c); + self->transients = g_slist_append(self->transients, c); } } }