all repos — openbox @ f8e7ab509c20a50610760c02278ca832a9b3c727

openbox fork - make it a bit more like ryudo

a more correct for the missing frame problem. don't restack windows when changing the window's layer while it is being managed.
Dana Jansens danakj@orodu.net
commit

f8e7ab509c20a50610760c02278ca832a9b3c727

parent

5888e7ed4b7a6499f80ea4d4c6f10b16f99243a5

2 files changed, 9 insertions(+), 6 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -1356,7 +1356,8 @@ }

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 @@ old = self->layer;

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 @@ else if (self->above) l = Layer_Above;

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)
M openbox/stacking.copenbox/stacking.c

@@ -81,8 +81,7 @@ stacking_list = g_list_remove(stacking_list, 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* */