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_get_state(self);
|
||||||
|
|
||||||
client_update_wmhints(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_startup_id(self);
|
||||||
client_get_desktop(self);/* uses transient data/group/startup id if a
|
client_get_desktop(self);/* uses transient data/group/startup id if a
|
||||||
desktop is not specified */
|
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 **/
|
/** 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
|
/* 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
|
windows from our children. But if we're transient for the group, then
|
||||||
other group transients are not our children. */
|
other group transients are not our children. */
|
||||||
|
@ -1253,7 +1266,7 @@ static void client_update_transient_tree(ObClient *self,
|
||||||
c = it->data;
|
c = it->data;
|
||||||
if (c != self && (!c->transient_for ||
|
if (c != self && (!c->transient_for ||
|
||||||
c->transient_for != OB_TRAN_GROUP))
|
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,
|
/* 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.
|
transient for eachother.
|
||||||
*/
|
*/
|
||||||
else if (newparent != NULL && newparent != OB_TRAN_GROUP &&
|
else if (newparent != NULL && newparent != OB_TRAN_GROUP &&
|
||||||
newparent != newparent &&
|
newparent != oldparent &&
|
||||||
/* don't make ourself its child if it is already our child */
|
/* don't make ourself its child if it is already our child */
|
||||||
!client_is_direct_child(self, newparent))
|
!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
|
/* 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
|
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 */
|
/* Don't make it our child if it is already our parent */
|
||||||
!client_is_direct_child(c, self))
|
!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