From f8e7ab509c20a50610760c02278ca832a9b3c727 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 27 Apr 2003 22:33:38 +0000 Subject: a more correct for the missing frame problem. don't restack windows when changing the window's layer while it is being managed. --- openbox/client.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'openbox/client.c') 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) -- cgit v1.2.3