]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
Add a FocusToBottom action which moves the client to the bottom of the focus order...
[chaz/openbox] / openbox / action.c
index 66475880803ea0038b057dc27a16bbbdce810dd4..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,
@@ -906,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);
         }
@@ -1045,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;
@@ -1076,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);
 }
 
@@ -1099,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);
 }
 
This page took 0.023569 seconds and 4 git commands to generate.