summaryrefslogtreecommitdiff
path: root/openbox/client.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-04-27 22:33:38 +0000
committerDana Jansens <danakj@orodu.net>2003-04-27 22:33:38 +0000
commitf8e7ab509c20a50610760c02278ca832a9b3c727 (patch)
tree757c15a3463c1842759125a17b7a8ea872b3a3c8 /openbox/client.c
parent5888e7ed4b7a6499f80ea4d4c6f10b16f99243a5 (diff)
a more correct for the missing frame problem. don't restack windows when changing the window's layer while it is being managed.
Diffstat (limited to 'openbox/client.c')
-rw-r--r--openbox/client.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/openbox/client.c b/openbox/client.c
index c475fba3..47be1bd9 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -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)