]> Dogcows Code - chaz/openbox/commitdiff
split decorations into decorate/undecorate/toggledecorations
authorDana Jansens <danakj@orodu.net>
Fri, 13 Jul 2007 15:29:00 +0000 (11:29 -0400)
committerDana Jansens <danakj@orodu.net>
Fri, 13 Jul 2007 15:29:00 +0000 (11:29 -0400)
openbox/actions/decorations.c

index a8f0929cf7e39c46e504ab7d6c6c4528d7e755fe..fa5606d17781e255a142a69e8ed0fdd94882b5d4 100644 (file)
@@ -1,62 +1,47 @@
 #include "openbox/actions.h"
 #include "openbox/client.h"
 
-typedef struct {
-    gboolean toggle;
-    gboolean on;
-} 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);
+static gboolean run_func_on(ObActionsData *data, gpointer options);
+static gboolean run_func_off(ObActionsData *data, gpointer options);
+static gboolean run_func_toggle(ObActionsData *data, gpointer options);
 
 void action_decorations_startup()
 {
-    actions_register("Decorations",
-                     setup_func,
-                     free_func,
-                     run_func,
+    actions_register("Decorate", NULL, NULL, run_func_on, NULL, NULL);
+    actions_register("Undecorate", NULL, NULL, run_func_off, NULL, NULL);
+    actions_register("ToggleDecorations", NULL, NULL, run_func_toggle,
                      NULL, NULL);
 }
 
-static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
+/* Always return FALSE because its not interactive */
+static gboolean run_func_on(ObActionsData *data, gpointer options)
 {
-    xmlNodePtr n;
-    Options *o;
-
-    o = g_new0(Options, 1);
-    o->toggle = TRUE;
-
-    if ((n = parse_find_node("state", 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);
+    if (data->client) {
+        actions_client_move(data, TRUE);
+        client_set_undecorated(data->client, TRUE);
+        actions_client_move(data, FALSE);
     }
-
-    return o;
+    return FALSE;
 }
 
-static void free_func(gpointer options)
+/* Always return FALSE because its not interactive */
+static gboolean run_func_off(ObActionsData *data, gpointer options)
 {
-    Options *o = options;
-
-    g_free(o);
+    if (data->client) {
+        actions_client_move(data, TRUE);
+        client_set_undecorated(data->client, FALSE);
+        actions_client_move(data, FALSE);
+    }
+    return FALSE;
 }
 
 /* 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) {
         actions_client_move(data, TRUE);
-        if (o->toggle || o->on != !data->client->undecorated)
-            client_set_undecorated(data->client, !data->client->undecorated);
+        client_set_undecorated(data->client, !data->client->undecorated);
         actions_client_move(data, FALSE);
     }
-
     return FALSE;
 }
This page took 0.023508 seconds and 4 git commands to generate.