]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
rename the 'root' context to 'desktop'
[chaz/openbox] / openbox / action.c
index 9c2ded309ec66164b1c5e3814efbc585816452af..4e3b83ba9cec36724437b106bffd4ac79f48f964 100644 (file)
@@ -314,6 +314,11 @@ ActionString actionstrings[] =
         action_directional_focus,
         setup_action_directional_focus_northwest
     },
+    {
+        "activate",
+        action_activate,
+        NULL,
+    },
     {
         "focus",
         action_focus,
@@ -329,6 +334,11 @@ ActionString actionstrings[] =
         action_iconify,
         NULL
     },
+    {
+        "raiselower",
+        action_raiselower,
+        NULL
+    },
     {
         "raise",
         action_raise,
@@ -711,6 +721,9 @@ ObAction *action_parse(xmlDocPtr doc, xmlNodePtr node)
             } else if (act->func == action_send_to_desktop_dir) {
                 if ((n = parse_find_node("wrap", node->xmlChildrenNode)))
                     act->data.sendtodir.wrap = parse_bool(doc, n);
+            } else if (act->func == action_activate) {
+                if ((n = parse_find_node("here", node->xmlChildrenNode)))
+                    act->data.activate.here = parse_bool(doc, n);
             }
         }
         g_free(actname);
@@ -735,6 +748,12 @@ void action_execute(union ActionData *data)
     }
 }
 
+void action_activate(union ActionData *data)
+{
+    if (data->activate.c)
+        client_activate(data->activate.c, data->activate.here);
+}
+
 void action_focus(union ActionData *data)
 {
     if (data->client.c)
@@ -753,6 +772,16 @@ void action_iconify(union ActionData *data)
         client_iconify(data->client.c, TRUE, TRUE);
 }
 
+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));
+    }
+}
+
 void action_raise(union ActionData *data)
 {
     if (data->client.c)
@@ -1208,7 +1237,7 @@ void action_directional_focus(union ActionData *data)
         return;
     if ((nf = client_find_directional(data->diraction.c,
                                       data->diraction.direction)))
-        client_activate(nf);
+        client_activate(nf, FALSE);
 }
 
 void action_movetoedge(union ActionData *data)
This page took 0.023641 seconds and 4 git commands to generate.