continuation of r6039 in all respects
This commit is contained in:
parent
dbafb9ac9b
commit
431035df66
1 changed files with 18 additions and 5 deletions
|
@ -930,7 +930,9 @@ static void client_get_all(ObClient *self)
|
|||
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 @@ static void client_update_transient_tree(ObClient *self,
|
|||
|
||||
/** 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 @@ static void client_update_transient_tree(ObClient *self,
|
|||
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 @@ static void client_update_transient_tree(ObClient *self,
|
|||
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 @@ static void client_update_transient_tree(ObClient *self,
|
|||
/* 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue