]> Dogcows Code - chaz/openbox/blobdiff - openbox/actions/omnipresent.c
Merge branch 'backport' into work
[chaz/openbox] / openbox / actions / omnipresent.c
index 02bd99179d0e3f8b8abf17c80dbfd6dbef42a946..4309acc642231a0ee35f555af2108d060a2a9720 100644 (file)
@@ -2,61 +2,22 @@
 #include "openbox/client.h"
 #include "openbox/screen.h"
 
-typedef struct {
-    gboolean toggle;
-    gboolean on;
-} Options;
+static gboolean run_func_toggle(ObActionsData *data, gpointer 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_omnipresent_startup()
-{
-    actions_register("omnipresent",
-                     setup_func,
-                     free_func,
-                     run_func,
-                     NULL, NULL);
-}
-
-static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
+void action_omnipresent_startup(void)
 {
-    xmlNodePtr n;
-    Options *o;
-
-    o = g_new0(Options, 1);
-    o->toggle = TRUE;
-
-    if ((n = parse_find_node("omnipresent", node))) {
-        gchar *s = parse_string(doc, n);
-        if (g_ascii_strcasecmp(s, "toggle")) {
-            o->toggle = FALSE;
-            o->on = parse_bool(doc, n);
-        }
-        g_free(s);
-    }
-
-    return o;
-}
-
-static void free_func(gpointer options)
-{
-    Options *o = options;
-
-    g_free(o);
+    actions_register("ToggleOmnipresent", NULL, NULL, run_func_toggle);
 }
 
 /* Always return FALSE because its not interactive */
-static gboolean run_func(ObActionsData *data, gpointer options)
+static gboolean run_func_toggle(ObActionsData *data, gpointer options)
 {
-    Options *o = options;
-
-    if (data->client)
-        if (o->toggle || (o->on != (data->client->desktop == DESKTOP_ALL)))
-            client_set_desktop(data->client,
-                               data->client->desktop == DESKTOP_ALL ?
-                               screen_desktop : DESKTOP_ALL, FALSE, TRUE);
-
+    if (data->client) {
+        actions_client_move(data, TRUE);
+        client_set_desktop(data->client,
+                           data->client->desktop == DESKTOP_ALL ?
+                           screen_desktop : DESKTOP_ALL, FALSE, TRUE);
+        actions_client_move(data, FALSE);
+    }
     return FALSE;
 }
This page took 0.022611 seconds and 4 git commands to generate.