all repos — openbox @ ca8a3ac7bf7a9396e5cc4cbb4135da170057f252

openbox fork - make it a bit more like ryudo

make the raiselower action smarter
Dana Jansens danakj@orodu.net
commit

ca8a3ac7bf7a9396e5cc4cbb4135da170057f252

parent

faeadd74d42b2d7f0af41aa6898d70eb616abf93

1 files changed, 21 insertions(+), 5 deletions(-)

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

@@ -774,12 +774,28 @@ }

void action_raiselower(union ActionData *data) { - if (data->client.c) { - if (data->client.c->frame->obscured) - stacking_raise(CLIENT_AS_WINDOW(data->client.c)); - else - stacking_lower(CLIENT_AS_WINDOW(data->client.c)); + ObClient *c = data->client.c; + GList *it; + gboolean raise = FALSE; + + if (!c) return; + + for (it = stacking_list; it; it = g_list_next(it)) { + ObClient *cit = it->data; + + if (cit == c) break; + if (client_normal(cit) && cit->layer == c->layer) { + if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) { + raise = TRUE; + break; + } + } } + + if (raise) + stacking_raise(CLIENT_AS_WINDOW(c)); + else + stacking_lower(CLIENT_AS_WINDOW(c)); } void action_raise(union ActionData *data)