X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Faction.c;h=b035558dcfbcd770943682531920c19bb13c8c29;hb=c0c06e3828981cacc96b27a87d7803f603241d15;hp=01176294ac2275faadec53949400b1b8ec38562a;hpb=90861d60f73c87e9459dd84b92e83993c4520366;p=chaz%2Fopenbox diff --git a/openbox/action.c b/openbox/action.c index 01176294..b035558d 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -334,6 +334,11 @@ ActionString actionstrings[] = action_iconify, NULL }, + { + "raiselower", + action_raiselower, + NULL + }, { "raise", action_raise, @@ -767,6 +772,35 @@ void action_iconify(union ActionData *data) client_iconify(data->client.c, TRUE, TRUE); } +void action_raiselower(union ActionData *data) +{ + 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) == client_normal(c) && + cit->layer == c->layer && + cit->frame->visible) + { + 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) { if (data->client.c)