]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
offset of 1 is default
[chaz/openbox] / openbox / action.c
index 01176294ac2275faadec53949400b1b8ec38562a..b035558dcfbcd770943682531920c19bb13c8c29 100644 (file)
@@ -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)
This page took 0.020322 seconds and 4 git commands to generate.