]> Dogcows Code - chaz/openbox/commitdiff
a more correct for the missing frame problem. don't restack windows when changing...
authorDana Jansens <danakj@orodu.net>
Sun, 27 Apr 2003 22:33:38 +0000 (22:33 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 27 Apr 2003 22:33:38 +0000 (22:33 +0000)
openbox/client.c
openbox/stacking.c

index c475fba309054982c873a1942fe258c556a75bbb..47be1bd957bc33379ee841f89b895da2f8683291 100644 (file)
@@ -1356,7 +1356,8 @@ static Client *search_focus_tree(Client *node, Client *skip)
     return NULL;
 }
 
-static void calc_recursive(Client *self, StackLayer l, gboolean raised)
+static void calc_recursive(Client *self, Client *orig, StackLayer l,
+                           gboolean raised)
 {
     StackLayer old;
     GSList *it;
@@ -1365,10 +1366,10 @@ static void calc_recursive(Client *self, StackLayer l, gboolean raised)
     self->layer = l;
 
     for (it = self->transients; it; it = it->next)
-        calc_recursive(it->data, l, raised ? raised : l != old);
+        calc_recursive(it->data, orig, l, raised ? raised : l != old);
 
     if (!raised && l != old)
-       if (self->frame)
+       if (orig->frame) /* only restack if the original window is managed */
            stacking_raise(self);
 }
 
@@ -1376,6 +1377,9 @@ void client_calc_layer(Client *self)
 {
     StackLayer l;
     gboolean f;
+    Client *orig;
+
+    orig = self;
 
     /* transients take on the layer of their parents */
     if (self->transient_for) {
@@ -1413,7 +1417,7 @@ void client_calc_layer(Client *self)
     else if (self->below) l = Layer_Below;
     else l = Layer_Normal;
 
-    calc_recursive(self, l, FALSE);
+    calc_recursive(self, orig, l, FALSE);
 }
 
 gboolean client_should_show(Client *self)
index 89b5d53010c93af4ab08c625a7cdcdf2e2bf9271..6ff01721061fbc63c3aa7e513d5f2ad049822619 100644 (file)
@@ -81,8 +81,7 @@ static void raise_recursive(Client *client)
 
     /* raise transients first */
     for (sit = client->transients; sit; sit = sit->next)
-        if (((Client*)sit->data)->frame)
-            raise_recursive(sit->data);
+        raise_recursive(sit->data);
 
     /* find 'it' where it is the positiion in the stacking order where
        'client' will be inserted *before* */
This page took 0.031079 seconds and 4 git commands to generate.