]> Dogcows Code - chaz/openbox/commitdiff
add the unfocus action
authorDana Jansens <danakj@orodu.net>
Fri, 22 Jun 2007 14:32:50 +0000 (14:32 +0000)
committerDana Jansens <danakj@orodu.net>
Fri, 22 Jun 2007 14:32:50 +0000 (14:32 +0000)
Makefile.am
openbox/action.c
openbox/actions/all.c
openbox/actions/all.h
openbox/actions/unfocus.c [new file with mode: 0644]

index b59fdd34a265cce4f930a9d2fcebf26a4434268e..8f2c7aa0d64d827068ca673604ac8cf69fffbb28 100644 (file)
@@ -171,6 +171,7 @@ openbox_openbox_SOURCES = \
        openbox/actions/restart.c \
        openbox/actions/showdesktop.c \
        openbox/actions/showmenu.c \
+       openbox/actions/unfocus.c \
        openbox/actions.c \
        openbox/actions.h \
        openbox/client.c \
index a56f4cb4854819b104e30133c6ba8e2828d5847f..cf1ba86fb672e1c769a0fd1843b668c887272fff 100644 (file)
@@ -454,16 +454,6 @@ ActionString actionstrings[] =
         action_directional_focus,
         setup_action_directional_focus_northwest
     },
-    {
-        "unfocus",
-        action_unfocus,
-        setup_client_action
-    },
-    {
-        "focustobottom",
-        action_focus_order_to_bottom,
-        setup_client_action
-    },
     {
         "kill",
         action_kill,
@@ -1020,12 +1010,6 @@ void action_run_string(const gchar *name, struct _ObClient *c, Time time)
     action_run(l, c, 0, time);
 }
 
-void action_unfocus (union ActionData *data)
-{
-    if (data->client.any.c == focus_client)
-        focus_fallback(FALSE, FALSE, TRUE);
-}
-
 void action_iconify(union ActionData *data)
 {
     client_action_start(data);
@@ -1033,11 +1017,6 @@ void action_iconify(union ActionData *data)
     client_action_end(data, config_focus_under_mouse);
 }
 
-void action_focus_order_to_bottom(union ActionData *data)
-{
-    focus_order_to_bottom(data->client.any.c);
-}
-
 void action_unshaderaise(union ActionData *data)
 {
     if (data->client.any.c->shaded)
index c4edc5c345db1f2d960ffb4d9f04599b838d3a19..3b1fb5fe2fd576fe736870404a5aaec0dd271d6d 100644 (file)
@@ -17,4 +17,5 @@ void action_all_startup()
     action_raise_startup();
     action_lower_startup();
     action_raiselower_startup();
+    action_unfocus_startup();
 }
index 48b6d1c13796bf1efc433bc7b2f278c3b73b574b..69f2a5891db06733d6e345a7ddde8e2c8fa4ca6a 100644 (file)
@@ -18,5 +18,6 @@ void action_focus_startup();
 void action_raise_startup();
 void action_lower_startup();
 void action_raiselower_startup();
+void action_unfocus_startup();
 
 #endif
diff --git a/openbox/actions/unfocus.c b/openbox/actions/unfocus.c
new file mode 100644 (file)
index 0000000..d581864
--- /dev/null
@@ -0,0 +1,53 @@
+#include "openbox/actions.h"
+#include "openbox/focus.h"
+
+typedef struct {
+    gboolean tobottom;
+} Options;
+
+static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node);
+static void     free_func(gpointer options);
+static gboolean run_func(ObActionsData *data, gpointer options);
+
+void action_unfocus_startup()
+{
+    actions_register("Unfocus",
+                     setup_func,
+                     free_func,
+                     run_func,
+                     NULL, NULL);
+}
+
+static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
+{
+    xmlNodePtr n;
+    Options *o;
+
+    o = g_new0(Options, 1);
+    o->tobottom = TRUE;
+
+    if ((n = parse_find_node("tobottom", node)))
+        o->tobottom = parse_bool(doc, n);
+    return o;
+}
+
+static void free_func(gpointer options)
+{
+    Options *o = options;
+
+    g_free(o);
+}
+
+/* Always return FALSE because its not interactive */
+static gboolean run_func(ObActionsData *data, gpointer options)
+{
+    Options *o = options;
+
+    if (data->client && data->client == focus_client) {
+        if (o->tobottom)
+            focus_order_to_bottom(data->client);
+        focus_fallback(FALSE, FALSE, TRUE);
+    }
+
+    return FALSE;
+}
This page took 0.029288 seconds and 4 git commands to generate.