summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-07 17:07:35 +0000
committerDana Jansens <danakj@orodu.net>2007-05-07 17:07:35 +0000
commitedf29cfe733349e3e61de2b4fd9f2a8c1ebec274 (patch)
treeeb699e2bd0560bab2255f2873ee9721bc2c7c938
parente1081644c1eea458aab0901c76ebc7a112d280d7 (diff)
when a window becomes transient for its group, it needs to have group transients removed from itself
-rw-r--r--openbox/client.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 3b66a836..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);