]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
"oops"
[chaz/openbox] / openbox / action.c
index ef8052e717108747f5e19c1050049e46bcf7c609..fa41e788670af3f2608854408ec9679393ca6e04 100644 (file)
@@ -471,6 +471,11 @@ ActionString actionstrings[] =
         action_iconify,
         setup_client_action
     },
+    {
+        "focustobottom",
+        action_focus_order_to_bottom,
+        setup_client_action
+    },
     {
         "raiselower",
         action_raiselower,
@@ -536,6 +541,11 @@ ActionString actionstrings[] =
         action_move_relative_vert,
         setup_client_action
     },
+    {
+        "movetocenter",
+        action_move_to_center,
+        setup_client_action
+    },
     {
         "resizerelativehorz",
         action_resize_relative_horz,
@@ -901,6 +911,13 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             } else if (act->func == action_directional_focus) {
                 if ((n = parse_find_node("dialog", node->xmlChildrenNode)))
                     act->data.cycle.dialog = parse_bool(doc, n);
+            } else if (act->func == action_raise ||
+                       act->func == action_lower ||
+                       act->func == action_raiselower ||
+                       act->func == action_shadelower ||
+                       act->func == action_unshaderaise) {
+                if ((n = parse_find_node("group", node->xmlChildrenNode)))
+                    act->data.stacking.group = parse_bool(doc, n);
             }
             INTERACTIVE_LIMIT(act, uact);
         }
@@ -1040,6 +1057,11 @@ void action_iconify(union ActionData *data)
     client_action_end(data);
 }
 
+void action_focus_order_to_bottom(union ActionData *data)
+{
+    focus_order_to_bottom(data->client.any.c);
+}
+
 void action_raiselower(union ActionData *data)
 {
     ObClient *c = data->client.any.c;
@@ -1071,7 +1093,7 @@ void action_raiselower(union ActionData *data)
 void action_raise(union ActionData *data)
 {
     client_action_start(data);
-    stacking_raise(CLIENT_AS_WINDOW(data->client.any.c));
+    stacking_raise(CLIENT_AS_WINDOW(data->client.any.c), data->stacking.group);
     client_action_end(data);
 }
 
@@ -1094,7 +1116,7 @@ void action_shadelower(union ActionData *data)
 void action_lower(union ActionData *data)
 {
     client_action_start(data);
-    stacking_lower(CLIENT_AS_WINDOW(data->client.any.c));
+    stacking_lower(CLIENT_AS_WINDOW(data->client.any.c), data->stacking.group);
     client_action_end(data);
 }
 
@@ -1152,6 +1174,17 @@ void action_move_relative_vert(union ActionData *data)
     client_action_end(data);
 }
 
+void action_move_to_center(union ActionData *data)
+{
+    ObClient *c = data->client.any.c;
+    Rect *area;
+    area = screen_area_monitor(c->desktop, 0);
+    client_action_start(data);
+    client_move(c, area->width / 2 - c->area.width / 2,
+                area->height / 2 - c->area.height / 2);
+    client_action_end(data);
+}
+
 void action_resize_relative_horz(union ActionData *data)
 {
     ObClient *c = data->relative.any.c;
This page took 0.025985 seconds and 4 git commands to generate.